美文网首页
Spark SQL总览

Spark SQL总览

作者: hipeer | 来源:发表于2018-10-13 14:24 被阅读0次

    概览

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

    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的工作原理

    如下图:


    .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

    spark sql with hive.png

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

    相关文章

      网友评论

          本文标题:Spark SQL总览

          本文链接:https://www.haomeiwen.com/subject/awmyaftx.html