1.1 DataFrame是什么
1.2 DataFrame和RDD的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0PH9hGCO-1655396298057)(assets/1653400255144.png)]
-
上图直观地体现了DataFrame和RDD的区别。
-
DataFrame是基于RDD之上的分布式数据集,给予Schema信息。
- 左边:RDD -> 数据外在类型:Person(CaseClass),内部结构不知道
- 右边:DataFrame -> 数据内部结构,全部知道,包含字段名称和字段类型,但是不知道外部类型,Row类型(弱类型)
DataFrame = RDD[Row] + Schema
1.2 RDD与DataFrame性能
- Spark SQL性能上比RDD要高。因为Spark SQL了解数据内部结构,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。反观RDD,由于无从得知所存数据元素的具体内部结构,Spark Core只能在Stage层面进行简单、通用的流水线优化。