【摘要】:DataFrame的组成来源很广泛,例如:结构化文件、Hive中的Table、外部数据库,或者由RDD转换而来。DataFrame的API可以在Scala、Java、Python、R中使用。表1-1 DataFrame被抽象成分布式的表而在RDD中,DataFrame的形式如表1-2所示。2)DataFrame是以列为单位的,包含每个Record的元数据信息,也就是说DataFrame在优化时基于列内部的优化,而不是像RDD一样,只能够基于行来进行优化。
DataFrame是一个分布式的面向列组成的数据集,在概念上类似于一张关系型数据库中的表,但是在Spark计算引擎下,有了更高效的优化。DataFrame的组成来源很广泛,例如:结构化文件、Hive中的Table、外部数据库,或者由RDD转换而来。DataFrame的API可以在Scala、Java、Python、R中使用(Spark支持以上4种语言的开发)。
在R和Python中都有DataFrame,但Spark SQL中的DataFrame从形式上看最大的不同点在于,其天生是分布式的。从学习的角度讲,我们可以简单地把Spark SQL中的Dat-aFrame抽象成是一个分布式的表,其形式如表1-1所示。
表1-1 DataFrame被抽象成分布式的表
而在RDD中,DataFrame的形式如表1-2所示。
表1-2 RDD中Dataframe的表现形式(www.xing528.com)
数据的表现在RDD和DataFrame之间有两点根本的差异:
1)RDD是以Record为单位的,SparkSQL在优化的时候无法了解Record内部的细节,所以也就无法进行更深度的优化,这极大地限制了Spark SQL性能的提升。
2)DataFrame是以列为单位的,包含每个Record的元数据信息,也就是说DataFrame在优化时基于列内部的优化,而不是像RDD一样,只能够基于行来进行优化。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。