简述SparkSQL中RDDDataFrameDataSet三者的区别与联系?

Posted 程序小兵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述SparkSQL中RDDDataFrameDataSet三者的区别与联系?相关的知识,希望对你有一定的参考价值。

1)RDD

优点:

编译时类型安全 

编译时就能检查出类型错误

面向对象的编程风格 

直接通过类名点的方式来操作数据

缺点:

序列化和反序列化的性能开销 

无论是集群间的通信, 还是IO操作都需要对对象的结构和数据进行序列化和反序列化。

GC的性能开销,频繁的创建和销毁对象, 势必会增加GC

2)DataFrame

DataFrame引入了schema和off-heap

schema : RDD每一行的数据, 结构都是一样的,这个结构就存储在schema中。 Spark通过schema就能够读懂数据, 因此在通信和IO时就只需要序列化和反序列化数据, 而结构的部分就可以省略了。

3)DataSet

DataSet结合了RDD和DataFrame的优点,并带来的一个新的概念Encoder。

当序列化数据时,Encoder产生字节码与off-heap进行交互,能够达到按需访问数据的效果,而不用反序列化整个对象。Spark还没有提供自定义Encoder的API,但是未来会加入。

三者之间的转换:


以上是关于简述SparkSQL中RDDDataFrameDataSet三者的区别与联系?的主要内容,如果未能解决你的问题,请参考以下文章

大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)

sparksql怎么去掉na

一次sparksql问题排查记录

SparkSQL:SparkSQL 应用程序内的表注册

快坐下!SparkSQL 太迷了!

如何在 SparkSQL 中合并小文件? [复制]