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的优化原理都是一样的
网友评论