spark sql的概述与来历

Hive:类似于sql的hive ql语言,他的底层是直接把sql语句直接转化成MapReduce作业,sql==》MapReduce

因此他的执行速度就慢:Hive on MapReduce  特点:慢

改进:Hive on tez,Hive on Spark,就是解决mapReduce的计算速度慢的问题。

Spark:hive on spark ==>shark(hive on spark),其实shark的作用就是把ql语言翻译成RDD来操作。

Shark推出

优点:很受欢迎,基于spark的、基于内存的列式存储,与hive能够兼容。

缺点:hive ql的解析、逻辑执行计划生成、执行计划的优化是依赖于hive的,仅仅只是把物理执行计划从mr作业替换成spark作业。

终止:


13947662-c9f1fe508de33d58.png

Shark终止以后,产生了两个分支:

1)Hive on Spark

在Hive社区,源码是在Hive中。Hive发展已经很多年,产品趋于成熟。

2)Spark Sql

Spark社区,源码是在Spark中的,近几年发展起来的,就是为了优化掉Shark对hive的依赖,支持多种数据源,多种优化技术,扩展性好很多


13947662-3cec6bae5bee7962.png

1)Hive:

facebook开源出来的最原始的sql on hadoop的解决方案。

底层原理:

a.将Sql==>MapReduce(将sql指令转化成MapReduce作业)

b.提出了一个metastore概念:元数据(即里面存储hive有哪些表,表里有哪些列,每一列是什么数据类型等信息的),hive里面创建的表,在spark sql里面是可以访问的,平滑过渡起来很方面。

c.另外hive的sql跟关系性数据库的sql类似,他也有database、table、view这些概念。

2)impala:

a、是cloudera公司开发的,他的产品有:cdh版本的hadoop(此版本很好的解决了hadoop版本的依赖)、cm(提供了web界面方式安装hadoop生态圈的服务)

b、sql自己的守护进程执行的,非运行在MapReduce的。

c、metastore也有这个概念

3)presto

facebook开源的,京东在用,sql

4)drill(近几年火)

sql

能操作的数据服务框架:hdfs、hive、rdbms、json、hbase、mangoodb、s3或者外部关系型数据库

5)Spark SQL(近几年火)

sql

dataframe/dataset api

metastore

能访问的数据服务框架:hdfs、hive、rdbms、json、hbase、mangoodb、s3或者外部关系型数据库

Spark SQL的详细介绍


13947662-c9c9768f2ba9b571.png
社区活跃,且版本稳定


13947662-35323f8556d7ac85.png
可以操作sql/hive sql/udf、udafs和serdes


13947662-fe91089c46cb3537.png
可以通过jdbc和odbc方式访问已经存在三方库里的数据


13947662-2d657ca47918ca59.png
支持多种语言开发

Spark SQL is Apache Spark's module for working with structured data.(Spark SQL是Spark的一个模块,他是处理结构化数据的比如txt、json等)

Spark Sql不仅仅有访问和操作sql的功能,还有其他非常丰富的操作:外部数据源、优化等;

Spark Sql提供了sql的api也提供了DataFrame和DataSet的API。


13947662-75991d7eac76c91b.png


13947662-b4f1f8f4ba874133.png
13947662-3cf64e2f3dc5ac19.png
13947662-89c3e7ecd24b194f.png
13947662-14d4d6ad0971df6b.png
DataFrame执行速度比RDD快


13947662-22b2ce83f7c9e6d8.png
13947662-058e870717d60127.png
13947662-29015b2a743bf6f2.png
13947662-d31947be5c4a66cf.png
spark sql底层的catlist的优化过程


13947662-bff0f83269011047.png
13947662-417d03a06e873fea.png
DataFrame和Spark Sql的优化原理都是一样的


13947662-639e0ed61d2feb39.png

猜你喜欢

转载自blog.csdn.net/weixin_34088598/article/details/90970905