目录
概述
SparkSQL,顾名思义,就是Spark⽣态体系中的构建在SparkCore基础之上的⼀个基于SQL的计算模块。
Hadoop刚开始出来的时候,使用的是hadoop自带的分布式计算系统MapReduce,但是MapReduce的使用难度较大,所以就开发了Hive,Hive编程用的是类SQL的HQL的语句,这样编程的难度就大大的降低了,Hive的运行原理就是将HQL语句经过语法解析、逻辑计划、物理计划转化成MapReduce程序执行。当Spark出来以后,Spark团队也开发了一个Shark,就是在Spark集群上安装一个Hive的集群,执行引擎是Hive转化成Mapreduce的执行引擎,这样的框架就是Hive on Spark,但是这样是有局限性的,因为Shark的版本升级是依赖Hive的版本的,所有2014年7月1日spark团队就将Shark转给Hive进行管理,shark负责⼈,将shark项⽬结束掉,重新独⽴出来的⼀个项⽬,就是sparksql,不在依赖hive,做了独⽴的发展,逐渐的形成两条互相独⽴的业务,SparkSQL和Hive-On-Spark。在SparkSQL发展过程中,同时也吸收了Shark有 些的特点:基于内存的列存储,动态字节码优化技术。Spark团队开发了一个SparkSQL,这个计算框架就是将Hive on Spark的将SQL语句转化为Spark RDD的执行引擎换成自己团队从新开发的执行引擎。Spark SQL经历了几次的更新,演变历程如下:
-1 1.0版本以前
Hive on Spark Shark
-2 1.0.x版本
Spark SQL
Alpha版本(测试版本,不建议商业项目使用)
这个版本让Spark升为了Apache的顶级项目。
-3 1.3.x版本
SparkSQL DataFrame
Release(成熟,可以使用)
-4 spark 1.5.x版本
钨丝计划(底层代码的优化)
-5 spark 1.6.x版本
DataSet(alpha版本)
-6 Spark 2.x.x版本
DataSet(正式的)
Structrued Streaming
特点
官网上第一句话:“ Spark SQL is Apache Spark’s module for working with structured data. ”
Spark SQL是Apache Spark处理结构化数据的模块
官网地址:https://spark.apache.org/sql/
集成
无缝地将SQL查询与Spark程序混合。
Spark SQL允许您使用SQL或熟悉的DataFrame API在Spark程序中查询结构化数据。适用于Java、Scala、Python和R语言。
统一的数据访问
以相同的方式连接到任何数据源。
DataFrames和SQL提供了一种访问各种数据源的通用方法,包括Hive、Avro、Parquet、ORC、JSON和JDBC。您甚至可以通过这些源连接数据。
hive集成
在现有仓库上运行SQL或HiveQL查询。
Spark SQL支持HiveQL语法以及Hive SerDes和udf,允许您访问现有的Hive仓库。
标准的连接
通过JDBC或ODBC连接。
服务器模式为业务智能工具提供了行业标准JDBC和ODBC连接。
总结