一. Spark SQL 前世今生
1. Shark
Hive on Spark
Hive:类似于sql的HiveQL语言, sql==> mapreduce
特点:mapreduce
改进:hive on tez,hive on spark,hive on mapreduce
Spark:Hive on spark ==> shark(hive on spark)
特点:基于spark,基于内存的列式存储,与hive能够兼容
缺点:HiveQL的解析,逻辑执行计划生成,执行计划的优化是依赖于hive的,仅仅只是把物理执行计划从mapreduce作业替换成了spark作业
2. Shark 终止
shark终止之后,产生了两个分支:
hive on spark:hive社区,源码是在hive中;
Spark sql:Spark社区,源码是在spark中,支持多种数据源,多种优化技术,扩展性好
二. SQL on Hadoop
1. Hive
sql ==> mapreduce
metastore:元数据
sql:database,table,view
2. impala
cloudera:cdh(建议生产使用hadoop系列版本),cn
sql:自己的守护进程执行的,非mapreduce
metastore
3.presto
京东
sql
4. drill
sql
访问:hdfs,rdbms,json,mangodb,s3,hive
5.Spark SQL
sql
dataframe/dataset api
metastore
访问 :hdfs,rdbms,json,mangodb,s3,hive =>外部数据源