12.SparkSQL概述

SparkSQL概述

1. SparkSQL概述

1.1 SparkSQL是什么

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g7Xrat4M-1655396200675)(assets/1653210188965.png)]

  • Spark SQL是Spark用于结构化数据(structured data)处理的Spark模块。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EB5w3gRG-1655396200677)(assets/1653223225529.png)]

1.2 为什么有SparkSQL

1.2.1 概述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-liktjJ67-1655396200677)(assets/1653223510145.png)]

1.2.2 Hive and SparkSQL

  • SparkSQL的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具。

  • Hive是早期唯一运行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,降低的运行效率,为了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具开始产生,其中表现较为突出的是:

    • Drill
    • Impala
    • Shark
  • 其中Shark是伯克利实验室Spark生态环境的组件之一,是基于Hive所开发的工具,它修改了下图所示的右下角的内存管理、物理计划、执行三个模块,并使之能运行在Spark引擎上。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8STGvrX-1655396200678)(assets/1653210397496.png)]

  • Shark的出现,使得SQL-on-Hadoop的性能比Hive有了10-100倍的提高。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8QbZ98ie-1655396200679)(assets/1653210464108.png)]

1.2.3 SparkSQL历史

  • 随着Spark的发展,对于野心勃勃的Spark团队来说,Shark对于Hive的太多依赖(如采用Hive的语法解析器、查询优化器等等),制约了Spark的One Stack Rule Them All的既定方针,制约了Spark各个组件的相互集成,所以提出了SparkSQL项目。SparkSQL抛弃原有Shark的代码,汲取了Shark的一些优点,如内存列存储(In-Memory Columnar Storage)、Hive兼容性等,重新开发了SparkSQL代码;由于摆脱了对Hive的依赖性,SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便,真可谓“退一步,海阔天空”。
    • 数据兼容方面 SparkSQL不但兼容Hive,还可以从RDD、parquet文件、JSON文件中获取数据,未来版本甚至支持获取RDBMS数据以及cassandra等NOSQL数据;
    • 性能优化方面 除了采取In-Memory Columnar Storage、byte-code generation等优化技术外、将会引进Cost Model对查询进行动态评估、获取最佳物理计划等等;
    • 组件扩展方面 无论是SQL的语法解析器、分析器还是优化器都可以重新定义,进行扩展。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5HItjsu-1655396200680)(assets/1653211024055.png)]

1.2.4 SparkSQL和Hive on Spark

  • 2014年6月1日Shark项目和SparkSQL项目的主持人Reynold Xin宣布:停止对Shark的开发,团队将所有资源放SparkSQL项目上,至此,Shark的发展画上了句话,但也因此发展出两个支线:SparkSQL和Hive on Spark。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWSlG6Nk-1655396200681)(assets/clip_image002.jpg)]

    其中SparkSQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive;而Hive on Spark是一个Hive的发展计划,该计划将Spark作为Hive的底层引擎之一,也就是说,Hive将不再受限于一个引擎,可以采用Map-Reduce、Tez、Spark等引擎。

  • 对于开发人员来讲,SparkSQL可以简化RDD的开发,提高开发效率,且执行效率非常快,所以实际工作中,基本上采用的就是SparkSQL。Spark SQL为了简化RDD的开发,提高开发效率,提供了2个编程抽象,类似Spark Core中的RDD

    • DataFrame
    • DataSet

2. SparkSQL特点

2.1 易整合

  • 无缝的整合了 SQL 查询和 Spark 编程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-byIKjDyR-1655396200682)(assets/1653211772545.png)]

2.2 统一的数据访问

  • 使用相同的方式连接不同的数据源

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dtjOQbJ-1655396200683)(assets/1653211805679.png)]

2.3 兼容Hive

  • 在已有的仓库上直接运行 SQL 或者 HiveQL

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxGBtVno-1655396200684)(assets/1653211846140.png)]

2.4 标准数据连接

  • 通过 JDBC 或者 ODBC 来连接

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buq0Ug6w-1655396200684)(assets/1653211878768.png)]

<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值