设为首页 加入收藏

TOP

Spark SQL总览
2019-02-09 13:21:34 】 浏览:40
Tags:Spark SQL 总览


概览

Spark SQL是运行在Spark Core之上,用来处理结构化和半结构化数据的一个组件。Spark SQL使用DataFrame(SchemaRDD)/Dataset作为其数据抽象,并充当这些数据的处理引擎。

13686625-bdb83f5048bc5b94.png
Spark SQL.png

具体来说, Spark SQL提供了以下三大功能:

  • Spark SQL 可以从各种结构化的数据源中读取数据。例如:JSON,Hive,Parquet等。

  • Spark SQL 不仅支持在Spark程序中使用SQL语句进行数据查询,也支持从类似商业智能软件Tableau这样的外部工具中通过标准数据库连接器(JDBC/ODBC)连接Spark进行查询。

  • 当在Spark程序中使用Spark SQL时,Spark SQL支持SQL与常规的Python/Java/Scala代码高度整合,包括连接RDD与SQL表,公开的自定义SQL函数接口等。


Spark SQL的工作原理

如下图:


13686625-63268ac362999a23.png
.png

其中Catalyst阶段是最为重要的,它的作用是把一个逻辑计划转换成可以执行的物理计划(可能生成多个物理计划),然后由Cost Model评估模型来选择最优方案,最后开始执行。

Spark SQL API

  • SparkContext
    SparkContext是Spark的入口,相当于应用程序的main函数。目前在一个JVM进程中可以创建多个SparkContext,但是只能有一个active级别的。如果你需要创建一个新的SparkContext实例,必须先调用stop方法停掉当前active级别的SparkContext实例。

  • SQLContext(Spark1.6有的)
    SQLContext是Spark SQL的一个分支入口,可以用来操作SQL

  • SparkSession
    Spark2.0引入的,提供单个入口点来与底层Spark功能交互,并允许使用DataFrame和Dataset API进行Spark编程。SparkConf、SparkContext和SQLContext都已经被封装在SparkSession当中。

  • DataFrame
    Spark SQL的数据抽象,也叫SechemaRDD。

  • Dataset
    最新的Spark SQL 数据抽象,结合了RDD的优势(强类型,能使用lambda表达式函数)和
    Spark SQL优化执行引擎。

  • HiveContext
    继承自SqlContext,用来操作Hive

Spark SQL & Hive

13686625-cd50dc9f0791c798.png
spark sql with hive.png

包含Hive支持的Spark SQL可以支持Hive表访问,UDF,SerDe(序列化格式和反序列化格式),以及Hive查询语言(HQL)。
SparkSQL使用Hive的Meta Store,但是有自己的的Thrift Server


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark与深度学习框架——H2O、dee.. 下一篇5.spark弹性分布式数据集