1、SparkSQL前世今生
为什么需要SQL
1)事实上的标准:统计分析的标准
2)易学易用
3)受众面大
例子:
对文本文件进行统计分析:
id,name,age,city
1001,zhangsan,45,beijing
....
table定义:Person
column定义:
id:int
name:string
age:int
city:string
hive:load data
sql:query
Shark:
Hive:类似sql的Hive QL语言,sql==>mapreduce
缺点:mapreduce效率比较低下
改进:hive on tez 、mapreduce 、spark上面
Shark推出:很受欢迎,将原来hive数据跑在spark,基于spark、基于内存的列式存储、与hive能够兼容
缺点:hive ql的解析、逻辑执行计划的生成是依赖与hive的,Shark仅仅是把物理执行计划从mr作业替换成spark作业
Shark在14年左右被终止之后,产生两个分支:
1)hive on spark
hive社区,源码在hive 中
2)spark SQL
Spark 社区,源码在Spark中
支持多种数据源、多种优化技术、扩展性好很多
2、SQL on Hadoop 常用框架
1)hive:将sql转换成mapreduce,megastore:元数据,sql:database、table、view
2) impala:cloudera:cdh、cm sql:守护自己的进程而不是mr的
3)presto:facebook、京东使用 sql
4) drill sql 可以访问:hdfs 、rdbms、json、hbase、mangodb、hive
5) Spark SQL sql dataframe/datasets api metastore
可以访问:hdfs 、rdbms、json、hbase、mangodb、hive ==>外部数据源
3、Spark SQL概述
1)Spark中核心组件,除sparkcore 之外最受关注的模块,spark1.0版本发布的(Alpha毕业之后比较稳定)
2)运行sql hive
3)通过jdbc通过spark快速处理数据
4)支持多语言
5)SparkSQL 不仅仅有访问和操作SQL功能,还提供其他丰富的操作:外部数据源、优化
4、Spark SQL 愿景
写更少的代码、读更少的数据、让底层进行优化
5、Spark SQL架构