Spark SQL 初识1(2.0)

来源:互联网 发布:2017大数据峰会 编辑:程序博客网 时间:2024/06/15 23:34

什么是Spark SQL 

1. Apache Spark SQL 是Spark用来操作结构化与半结构化数据的接口。

2. 从历史来讲,Spark SQL 的前身是Shark (SQL on Spark), Shark之于Spark就相当于hive 之于Hadoop MapReduce。

3. Spark SQL提供了一种特殊的RDD,早些版本称为SchemaRDD,从Spark1.3.0以后的版本,SchemaRDD已被一个称为DataFrames的编程抽象取代, DataFrames可以充当分布式SQL查询引擎。

Spark SQL 动机与解决方案

动机:

1. 多数的数据处理流程既需要关系型操作,又需要过程性操作, 比如:
1) 用户一方面需要关系型操作(如数据查询、统计分析)
2) 另一方面又需要过程式的操作(如ETL、机器学习与图分析等高级数据处理)  注解:ETL,Extraction-Transformation-Loading的缩写,中文名为数据抽取、转换和加载
2. 这两类操作常常是割裂的

解决方案(两大贡献):

1.DataFrame API : 将关系型的处理与过程型处理结合起来,可以对外部数据源(Hive、JSON等)和Spark内建的分布式集合RDD进行关系型操作。
2.Catalyst: 一个可扩展的SQL查询优化器,采用了Scala语言的特性(模式匹配,Quasiquotes(https://docs.scala-lang.org/overviews/quasiquotes/intro.html))可增加组合规则、控制代码生成,定义扩展。

Spark SQL 的编程接口