以下内容来源于DT大数据梦工厂:
一:SparkSQL 与DataFrame
1、 sparksql之所以是除了spark core以外最大的和最受关注的组件,原因是:
a) 处理一切存储介质和各种格式的数据(同时可以方便的扩展sparksql的功能来支持更多类型的数据例如:kudu)
b) spark SQL把数据仓库的设计推向了新的高度,不仅仅是无敌的计算速度(sparksql比shark快乐至少一个数量级,而shark币hive快了至少一个数量级。尤其在Tungsten成熟以后更加无可匹敌,)把数据仓库
的的计算复杂度推向了新高度(sparksql 后续推出的DataFrame可以让数据仓库直接使用机器学习、图计算等复杂度的算法库对数据仓库进行复杂深度数据价值的挖掘);
运行引擎主要是靠spark
c) spark sql (DataFrame DataSet)不仅是数据仓库的引擎,而且也是数据挖掘的引擎,更为重要的是spark生气了是数据科学计算和分析引擎
hive+ SparkSQL+DataFrame大数据解决方案。
hive 负责廉价数据仓库存储;
sparksql 负责高速的计算
DataFrame 负责数据挖掘
d)后来的DataFrame 让spark(SQL)一举成为大数据计算引擎的技术实现霸主尤其是在Tungsten的强力支持下
e)
二 DataFrame 与RDD
1、R 和python中都有DataFrame,spark 中的DataFrame从形式上看最大的不同是其天生是分布式的,可以简单的认为spark中的DataFrame是一个分布式的Table,
形式如下:DataFrame
Name | Age | Tel |
String | Int | Long |
String | Int | Long |
String | Int | Long |
String | Int | Long |
String | Int | Long |
String | Int | Long |
而RDD 形式如下:
Person |
Person |
Person |
Person |
Person |
Person |
a) RDD 是以record为单位的,spark在优化的时候无法获得Record内部的细节,所以也就是无法进行更深度的优化,这极大的限制了sparksql提升
d) DataFrame
三、企业及应用
第一阶段:最开始阶段文件存储,c代码处理
第二阶段:javaEE加数据库,瓶颈数据库不能分布式(扩展性),企业只能处理局部数据,数据过滤然后在放在数据库中。
第三阶段数据局限导致hive,hive 计算能力有限,速递性能问题
第四阶段:hive 转向sparksql+hive,速度问题,计算能力是一个问题
第五阶段:hive+spark SQL+dataFrame
第六阶段:hive+spark SQL+ dataFrame +dataSet