以下内容来源于DT大数据梦工厂:
SparkSQL 于DtaFrame
DataFrame与RDD
企业实践
一、 SparkSql于DataFrame
sparkSql之所以是出了spark core以外最大的和最受欢迎组件原因是:1、处理各种存储介质和各种格式的数据(可以方便扩展sparkSQL的功能来支持更多类型的数据例如kudu)
2、sparkSQL把数据仓库的计算能力推向了新的高度(Tangsten,sparkSQL后续推出的DataFrame可以让数据直接使用机器学习,图计算等复杂的算法来对数据仓库进行复杂深度数据价值挖掘)。
3、sparkSQL(DataFrame,DataSet)不仅是数据仓库的引擎,也是数据挖掘的引擎更为重要的是sparkSQL是数据科学计算和分析引擎。
4、后来的DataFrame让spark(SQL)一举成为了大数据计算引擎的技术实现尤其在TungSten的强力支持下
5、Hive+SparkSQL+DataFrame
5.1hive负责廉价的数据仓库设置存储
5.2sparkSQL:负责高速的计算
5.3DataFrame复杂复杂的挖掘技术
二、 DataFrame与RDD
1、 R和Python都有DataFrame,spark中的dataFerame。Spark中的dataFrame是一个分布式的Table形式如下
Name |
Age |
Tel |
|
|
String |
Int |
Long |
|
|
String |
Int |
Long |
|
|
String |
Int |
Long |
|
|
String |
Int |
Long |
|
|
String |
Int |
Long |
|
|
String |
Int |
Long |
|
|
DataFrame带有具体每条数据的schel元数据信息,在二维表中每一列都带有数据名称和数据类型
RDD 形式如下
Person |
Person |
Person |
Person |
Person |
Person |
Person |
RDD本身不知道person里面有什么数据,
DataFrane 和RDD的根本差异:
a:RDD是以Record为单位的,spark在优化的时候无法获得Record的内部细节,也就是无法进行更深度的优化,这极大的限制了sparkSQL性能的提升
b:DataFrame包含了每个Record的MeataData信息,也就是说DataFrame的优化属于内部的优化,不能像RDD一样只能基于行进行优化。