spark sql的概述与来历

2019-05-29  本文已影响0人  机灵鬼鬼

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作业。

终止:

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

1)Hive on Spark

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

2)Spark Sql

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

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的详细介绍

社区活跃,且版本稳定 可以操作sql/hive sql/udf、udafs和serdes 可以通过jdbc和odbc方式访问已经存在三方库里的数据 支持多种语言开发

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。

DataFrame执行速度比RDD快 spark sql底层的catlist的优化过程 DataFrame和Spark Sql的优化原理都是一样的
上一篇下一篇

猜你喜欢

热点阅读