第56课:解密Spark SQL与DataFrame的本质

本篇博文主要讲解内容如下:
1. Spark SQL与DataFrame
2. RDD与DataFrame
3. Spark SQL企业级最佳实践
一:Spark SQL与DataFrame
1. Spark SQL非常强大主要体现在一下几点:

a)  可以处理一切存储介质和各种格式的数据(可以方便的扩展Spark SQL的功能来支持更多类型的数据,例如Kudu),包括Hive,Mysql,DB2等传统数据库。
b)  Spark SQL把数据仓库的计算能力推向了新的高度,不仅是无敌的计算速度(Spark SQL比Shank快了至少一个数量级,而Shank比Hive快了至少一个数量级,尤其是在Tungsten成熟以后会更加无可匹敌),更为重要的是把数据仓库的计算复杂度推向了历史上全新的高度(Spark SQL后续推出的DataFrame可以让数据仓库直接使用机器学习,图计算等复杂的算法库来对数据仓库进行复杂深度数据价值的挖掘)。
c)  Spark SQL(DataFrame,DataSet)不仅是数据仓库的引擎,而且也是数据挖掘的引擎,更为重要的是Spark SQL是数据科学计算和分析引擎!!
d)  后来的DataFrame让Spark(SQL)一举成为了大数据计算引擎的技术实现霸主(尤其是在Tungsten的强力支持下)!
e)  Hive+Spark SQL+DataFrame目前至少是在中国所有的大数据项目90%无法逃脱的技术组合。
A)  Hive:负责廉价的数据库存储。
B)  Spark SQL:负责高速的计算。
C)  DataFrame:负责复杂的数据挖掘

二:RDD与DataFrame
1. R和Python中有DataFrame,Spark中的DataFrame从形式上最大的不同点其天生是分布式的,你可以简单的认为Spark中的DataFrame是一个分布式的Table,形如如下:
第56课:解密Spark SQL与DataFrame的本质_第1张图片
而RDD是形如以下所示:
第56课:解密Spark SQL与DataFrame的本质_第2张图片
2. RDD和DataFrame的根本差异是:
a) RDD是以Record为单位的,Spark在优化的时候无法洞悉Record内部的细节,所以也就无法进行更深度的优化,这极大的限制了Spark SQL性能提升!
b) DataFrame包含了每个Record的Metadata信息,也就是说DataFrame的优化是基于列内部的优化,而不是像RDD一样只能够基于行进行优化。

三:Spark SQL企业级最佳实践

  第一阶段:最开始阶段是文件存储,C代码处理。
  第二阶段:JavaEE加数据库,瓶颈数据库不能分布式(扩展性),企业只能处理局部数据,数据过滤然后在数据库中。
  第三阶段:数据局限导致Hive,Hive计算能力有限,出现速度性能问题。
  第四阶段:Hive转向Spark SQL+Hive,计算能力是一个问题。
  第五阶段:Hive+Spark SQL+DataFrame
  第六阶段:Hive+Spark SQL+DataFrame+DataSet

本课程笔记来源如下:
第56课:解密Spark SQL与DataFrame的本质_第3张图片

你可能感兴趣的:(sql,spark)