Spark RDD,DataFrame和DataSet的区别

RDD:编译时类型安全(编译时就进行类型检查),采用面向对象的编程风格。需要序列化和反序列化(对结构和数据),增加GC(垃圾回收)性能开销。

DataFrame:引入了schema(结构化,RDD中的每行数据结构相同)和off-heapJVM堆以外的内存直接受操作系统管理,Spark可以以二进制的形式序列化数据到off-heap中,无GC开销)。

DataSet:结合RDDDataFrame的优点,序列化数据时,使用Encoder产生字节码与off-heap进行交互,从而达到按需访问数据的效果,而不用反序列化整个对象。

一个Dataset是一个分布式的数据集合。一个Dataset可以从JVM对象来构造并且使用转换功能。

一个DataFrame是一个DataSet组织成的指定列。它的概念类似于关系型数据库。在ScalaJava中,一个DataFrame所代表的是一个或多个RowDataset

猜你喜欢

转载自blog.csdn.net/qq_27600723/article/details/80414383