温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

第56课:Spark SQL和DataFrame的本质

发布时间:2020-07-21 06:22:29 来源:网络 阅读:854 作者:lqding1980 栏目:大数据

一、Spark SQL与Dataframe

Spark SQL之所以是除Spark core以外最大和最受关注的组件的原因:

a) 能处理一切存储介质和各种格式的数据(你同时可以方便的扩展Spark SQL的功能来支持更多的数据类型,例如KUDO)

b)Spark SQL 把数据仓库的计算能力推向了一个新的高度。不仅是无敌的计算速度(Spark SQL比Shark快了一个数量级,Shark比Hive快了一个数量级),尤其是在tungsten成熟以后会更加无可匹敌。更为重要的是把数据仓库的计算复杂度推向了历史新高度(Spark后续推出的Dataframe可以让数据仓库直接使用机器学习、图计算等算法库来对数据仓库进行深度数据价值的挖掘)。

c)Spark SQL(Dataframe,DataSet)不仅是数据仓库的引擎,同时也是数据挖掘的引擎,更为重要的是Spark SQL是科学计算和分析的引擎。

d)后来的DataFrame让Spark SQL一举成为大数据计算引擎的技术上的霸主(尤其是在钨丝计划的强力支持下)。

e) Hive+Spark SQL+DataFrame

 1) Hive负责廉价的数据存储

 2) Spark SQL 负责高速的计算

 3)DataFrame 负责复杂的数据挖掘


二、DataFrame与RDD

a)R和Python中都有DataFrame,Spark中的DataFrame从形式上看,最大的不同点就是其天生是分布式的;你可以简单的认为DataFrame是一个分布式的Table,形式如下:

NameAgeTel
StringIntLong
StringIntLong
StringIntLong
StringIntLong
StringIntLong
StringIntLong

而RDD的形式如下:

Person
Person
Person
Person
Person
Person

RDD不知道数据行的属性,而DataFrame知道数据的列信息

b)RDD和DataFrame的根本差异

  RDD以record为基本单位,Spark在处理RDD时无法优化RDD的内部细节,所以也就无法进行更深入的优化,这极大的限制了Spark SQL的性能。

 DataFrame中包含了每个record的metadata信息,也就是说DataFrame优化时基于列内部优化,而不像RDD基于行进行优化。


三、Spark企业级最佳实践

阶段1 文件系统+C语言处理

阶段2 JavaEE + 传统数据库(扩展性太差,不支持分布式。即便有部分数据库支持分布式,但是因为事务一致性的关系,速度非常慢)

阶段3 Hive hive的计算能力有限,速度非常慢。

阶段4 Hive转向Hive+Spark SQL 

阶段5 Hive+Spark SQL+DataFrame

阶段6 Hive+Spark SQL+DataFrame+DataSet 



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI