没长正的技术专栏 勤动手、多思考

Spark总结

2021-04-30

阅读:

2021-04-30

一、Spark RDD DataFrame DataSet 分析

1. 来源

img

2. 转换

img

3. 区别

数据集名称 创建 序列化 类型 是否带有
元信息
检测时机  
RDD file、现有RDD
scala创建
专用的Encoder
编码器
运行时  
DataFrame 能相互转换 使用Java
序列化或Kryo
弱类型(untypedrel) schema 运行时  
DataSet SparkSession … 专用的Encoder
编码器
强类型(typedrel) schema 编译时  

4. 优缺点

数据集名称 优点 缺点
RDD 1.强大,内置很多函数操作,group,map,
filter等,方便处理结构化或非结构化数据
2.面向对象编程,直接存储的java对象,类型转化也安全
1.由于它基本和hadoop一样万能的,
因此没有针对特殊场景的优化,
比如对于结构化数据处理相对于sql来比非常麻烦
2.默认采用的是java序列号方式,序列化结果比较
大,而且数据存储在java堆内存中,
导致gc比较
DataFrame 1.结构化数据处理非常方便,支持Avro, CSV, elastic search,
and Cassandra等kv数据,也支持HIVE tables, MySQL等传统数据表
2.有针对性的优化,由于数据结构元信息spark已经保存,
序列化时不需要带上元信息,大大的减少了序列化大小,
而且数据保存在堆外内存中,减少了gc次数。
3.hive兼容,支持hql,udf等
1.编译时不能类型转化安全检查,
运行时才能确定是否有问题
2.对于对象支持不友好,
rdd内部数据直接以java对象存储,
dataframe内存存储的是row对象而不能是自定义对象
DataSet 1.dataset整合了rdd和dataframe的优点,支持结构化和非结构化数据
2.和RDD一样,支持自定义对象存储
3.和dataframe一样,支持结构化数据的sql查询
4.采用堆外内存存储,gc友好
5.类型转化安全,支持编译器解码,代码友好
6.官方建议使用dataset
 

参考

Spark中的RDD、DataFrame和DataSet讲解

如何理解spark中RDD和DataFrame的结构?

[Spark SQL 快速入门系列(4) RDD、DataFrame、DataSet三者的共性和区别](https://cloud.tencent.com/developer/article/1733897)

【Spark SQL- RDD DataFrame Dataset 三者的优缺点 , 三者之间的创建 , 以及相互转换】


Similar Posts

欢迎拍砖,多多交流,转载请注明出处:[没长正的技术专栏](http://blog.meizhangzheng.com) 如涉及侵权问题,请发送邮件到xsj34567@163.com,如情况属实本人将会尽快删除。


上一篇 SparkDataSet实战

下一篇 解决方案

Comments