需要Sql的原因:
1.事实上的标准
2.易学易用
3.受众面大
Shark:
HIve on tez
Hive on mapreduce
Hive on Spark
shark推出:欢迎,基于spark,基于内存的列式存储,与hive能够兼容
缺点:hive ql解析,逻辑执行计划生成,执行计划的优化是依赖于hive的
仅仅是把物理执行计划从mr作业替换为spark作业
hive没有注意线程安全
Shark终止以后,产生了两个分支:
hive on spark :
Hive社区,源码在HIve中
Spark SQL
Spark Sql社区,源码是在Spark中
支持多种数据源,多种优化技术,扩展性好很多
Sql on hadoop常用框架:
1.HIve
sql语句转化为mapreduce作业
metastore:元数据
Facebook开发
2.impala
cloudera:cdh,cm
sql:自己的守护进程执行,非mr
metastore:元数据
基于内存
3.presto
facebook开发
京东使用
4.drill
可以访问hdfs,rdbms,json,hbase,mangodb,s3,hive
5.Spark Sql
sql
dataframe/dataset api
metastore:
可以访问hdfs,rdbms,json,hbase,mangodb,s3,hive
SparkSql的概述:
1.可以运行,Sql,HiveSql,UDFs,UDAFs 和序列化以及反序列化
2.Connect BI tools to Spark through JDBC
3.支持Python,Java,R,Scala
Spark Sql它不仅有访问或者操作Sql的功能,还提供了其他的非常丰富的操作:外部数据源,优化
Spark SQL is Apache Spark's module for working with structured data
Spark Sql的应用并不局限于Sql
访问Hive,json,parquet等文件的数据
Sql只是Spark SQL的一个功能而已
SparkSql提供了SQl的api,DataFrame和Dataset的API
SparkSql愿景:
Write less Code
Read less data
Let the optimizer do the hard work
Spark Sql架构:
Spark1.x中Spark Sql的入口点:Sql Context:
SparkSQL的愿景:
1.写更少的代码