Spark SQL概述

一、Spark SQL介绍

1、为什么需要SQL

1) 事实上的标准

2) 易学易用

3) 受众面大

2、Shark(已经停止维护,不建议在生产上使用。)

Shark产生的目的就是为了让hive跑在spark之上。

   Hive: 类似于sql的Hive QL语言, sql 翻译成 mapreduce

     特点: 使用mapreduce作为引擎

      改进: hive on tez、hive on spark、hive on mapreduce

Spark: hive on spark ===> (也就是)shark

   shark刚推出时,很受欢迎。计算速度快,基于spark、基于内存的列式存储,与hive能够兼容。

缺点: hive ql的解析、逻辑执行计划生成、执行计划优化都要依赖于hive

    仅仅只是把物理执行计划从mr作业替换成spark作业。

Shark终止以后,产生了2个分支

1) hive on spark

   Hive社区,源码是在Hive中

2) Spark SQL

   Spark社区,源码是在Spark中

 支持多种数据源,多种优化技术,扩展性好很多。

二、SQL on Hadoop常用框架介绍

常用的框架如下图所示,包括HIVE,Impala,DRILL,Spark,presto,都是基于Hadoop的。

 1、HIVE(facebook开源)

  将sql装换成mapreduce

  提出了metastore(元数据)概念,例如Hive表的名字,表里有什么列,每个列的数据类型,数据存放在hdfs的路径上。这些元数据,在Spark也能使用。

2、Impala(cloudera公司开发的, hadoop常用版本cdh也是这家公司开发的,也是生产上建议使用的cdh版本)

    提供了cm,web方式安装hadoop。

   Impala提供了sql,有自己的守护进程执行的,非mr,基于内存的,对内存的要求比较高。

   metastore(元数据)

3、presto (facebook开源)

国内用的比较多的如京东

4、DRILL

     基于sql

     访问hdfs, rdbms,json、hbase,mangodb,s3、hive

5、Spark SQL

      sql

       dataframe/dataset api

  metastore

      访问hdfs, rdbms,json、hbase,mangodb,s3、hive  ==> 外部数据源

三、Spark SQL概述

1、Spark Sql是Spark的核心组件,在Spark1.0中开始出现(April 2014)

2、能有运行SQL和Hive QL,包括UDFs UDAFs 和SerDes。

3、通过JDBC的方式连接已经存在的BI工具

4、能够支持多种语言,包括Python,Scala,Java 和R语言。

5、Spark SQL能处理结构化的数据。不仅仅有访问或者操作SQL的功能,还提供了 其他丰富的操作:外部数据源、优化

总结:

1) Spark SQL的应用不局限于SQL

2) 访问hive、json、parquet等文件数据

3) SQL只是Spark SQL的一个功能而已。

 4) Spark SQL提供了SQL的api、DataFrame和Dataset的API。

四、Spark SQL愿景

Write less code: 写更少的代码

Read less data: 读更少的数据(优化引擎去掉不必要的数据)

Let the optimizer do the hard work: 将优化的工作交给底层的优化器。

五、Spark SQL架构图

作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!

原文地址:https://www.cnblogs.com/linlf03/p/14367059.html