Hive: 类似于sql的Hive QL语言, sql==(转换)==>mapreduce
- 特点:底层是mapreduce,效率不高
- 改进:执行引擎更换:hive on tez、hive on spark、hive on mapreduce
Spark:hive on spark ==> shark(hive on spark) shark翻译成RDD组件
Shark
- 特点:(1)基于spark (2)基于内存的列式存储 (3)与hive能够兼容
- 缺点:hive ql的解析、逻辑执行计划生成、执行计划的优化是依赖于hive的
仅仅只是把物理执行计划从mr作业替换成spark作业
Shark终止以后,产生了2个分支:
- hive on spark
Hive社区,源码是在Hive中
- Spark SQL
Spark社区,源码是在Spark中
支持多种数据源,多种优化技术,扩展性好很多
可以提供SQL on Hadoop的组件:
1)Hive
sql ==> mapreduce
metastore : 元数据
sql:database、table、view
facebook
2)impala
cloudera : cdh(建议大家在生产上使用的hadoop系列版本)、cm
sql:自己的守护进程执行的,非mr,基于内存的
metastore
3)presto
facebook
京东
sql
4)drill
sql,交互式
访问:hdfs、rdbms、json、hbase、mongodb、s3、hive
5)Spark SQL
Spark SQL is Apache Spark's module for working with structured data.
sql
dataframe/dataset api
metastore
访问:hdfs、rdbms、json、hbase、mongodb、s3、hive ==> 外部数据源
Spark SQL它不仅仅有访问或者操作SQL的功能,还提供了其他的非常丰富的操作:外部数据源、优化
Spark SQL概述小结:
1)Spark SQL的应用并不局限于SQL;
2)访问hive、json、parquet等文件的数据;
3)SQL只是Spark SQL的一个功能而已;===> Spark SQL这个名字起的并不恰当
4)Spark SQL提供了SQL的api、DataFrame和Dataset的API;
Spark SQL 架构(待完善...)