spark之DataFrame、DataSet、RDD的区别

RDD(弹性分布式数据集)

RDD是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合,RDD是Spark Core的底层核心,Spark则是这个抽象方法的实现

DataFrame

 上图直观地体现了DataFrame和RDD的区别。 
左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解 Person类的内部结构。 
而右侧的DataFrame却提供了详细的结构信息,使得Spark SQL可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。DataFrame多了数据的结构信息,即schema。这样看起来就像一张表了,DataFrame还配套了新的操作数据的方法,DataFrame API(如df.select())和SQL(select id, name from xx_table where …)

DataSet

DataSet是分布式的数据集合。DataSet是在Spark1.6中添加的新的接口。它集中了RDD的优点(强类型和可以用强大lambda函数)以及Spark SQL优化的执行引擎。DataSet可以通过JVM的对象进行构建,可以用函数式的转换(map/flatmap/filter)进行多种操作 
DataSet(dataset中每行数据是个Object)包含了DataFrame的功能,Spark2.0中两者统一,DataFrame表示为DataSet[Row],即DataSet的子集
 

转载自:https://blog.csdn.net/qq_40359681/article/details/79517527

猜你喜欢

转载自blog.csdn.net/weixin_40903057/article/details/88425017