3.Spark SQL概述
1.Spark SQL前世今生
- 为什么要使用sql?
- 事实上的标准
- 易学易用
- 受众面大
-
Hive
类似于sql的hive sql语句,sql==>mapreduce
缺点:基于mapreduce,执行效率比较低
改进:hive on tez,hive on spark,hive on mapreduce -
Shark
hive on spark ==> shark(把hive解析后的作业翻译成spark作业)
优点:1.基于spark;2.基于内存的列式存储;3.与hive能够兼容
缺点:hive ql 的解析、逻辑执行计划生成、执行计划的优化是依赖于hive的。仅仅只是把物理执行计划从mr作业替换成spark;mapreduce基于进程级别的,而spark是基于线程的,shark必须单独维护一个分支来处理线程相关的操作。
Shark终止后,产生了两个分支:
- Hive on spark(Hive社区中,源码是在hive中)
- spark sql(Spark社区,源码是在Spark中)(支持多种数据源,多种优化技术,扩展性也要好很多)
2.Sql on Hadoop 常用框架
image.png-
Hive
sql ==> mapreduce
metasotre: 原数据
sql: database, table, view -
impla
cloudera : cdh(建议大家在生产上使用的hadoop系列版本)、cm
sql : 自己的守护进程执行的,非mr (对内存要求比较高) -
presto
facebook,京东
支持sql -
drill
支持sql
能够访问:hdfs、rdbms、json、hbase、mongdb、c3、hive ==> 外部数据源 -
Spark SQL
支持sql
dataframe/dataset api
metastore
能够访问:hdfs、rdbms、json、hbase、mongdb、c3、hive ==> 外部数据源
3.Spark SQL 概述
官网:http://spark.apache.org/sql/
image.png image.png image.png image.pngSpark SQL is Apache Spark's module for working with structured data.
Spark SQL不仅仅有访问或者操作SQL的功能,他还提供了其他的非常丰富的操作:外部数据源,优化
Spark SQL概述小结:
1.Spark Sql并不局限于SQL
2.可以访问hive、json、parquet等文件的数据
3.SQL只是Spark SQL 的一个功能而已===>这个名字并不恰当
4.Spark SQL提供了SQL的api,DataFrame,Dataset的API
4.Spark SQL愿景
- Write the less code
- Read less data
- Let the optimizer do the hard work
网友评论