写点什么

Spark SQL 基本架构

  • 2022-11-01
    北京
  • 本文字数:740 字

    阅读完需:约 2 分钟

Spark SQL基本架构

Spark SQL 是构建在分布式计算框架 Spark 之上的结构化数据处理引擎,它不仅支持类 HQL 查询语言,也提供了一套结构化编程接口 DataFrame/DataSet。它是一个异构化数据处理引擎,支持多种数据源,包括 HDFS(各种文件格式)、Hive、关系型数据库等,用户可以使用 Spark SQL 提供的类 HQL 语言和结构化编程结构处理这些数据源中的数据。


Spark SQL 基本架构主要由四层构成:

  1. 用户接口层

Spark SQL 提供了两套访问接口:

  • 类 HQL 语言

该语言兼容绝大部分 HQL 语法,支持 CLI、JDBC/ODBC 等访问方式。它可以与 Hive 无缝集成,直接存取 Hive Metastore 中的数据库和数据表。

  • 结构化编程接口 DataFrame/DataSet

众所周知,SQL 表达能力是有限的,对于复杂的数据分析,比如机器学习算法实现,SQL 很难胜任。为了解决 SQL 的缺点,Spark SQL 引入了一套结构化编程接口 DataFrame/DataSet,基于这套 API,用户可灵活控制自己的计算逻辑,目前是 Spark 生态系统中最重要的编程接口,而 Spark Streaming, MLLib 和 graphⅩ等系统均基于这套 API 实现自己的引擎和编程接口。


  1. SQL 引擎层

Spark SQL 引擎层主要职责是将 HQL 或 DataFrame/DataSet 程序编译成可分布式运行的程序,涉及生成逻辑计划、物理计划、查询优化与执行等。其最重要的组件是查询优化器 catalyst,确保生成最优化的分布式程序。


  1. 计算引擎层

SQL 引擎层的输入是 HQL 或 DataFrame/DataSet 程序,而输出则是基于 RDD 模型的 Spark 分布式计算程序,这些程序会直接运行在 Spark 计算引擎层。


  1. 存储层

Spark SQL 另一个强大之处是对数据源进行了抽象,内置了对大量存储引擎的支持,包括 HDFS(支持各种数据存储格式,包括行式存储格式 Text 和 Sequence File,列式存储格式 Parquet 和 ORC 等)、Hive、各种关系型数据库等。用户也可以根据需要将特定数据存储引擎接入 Spark SQL,进而利用其强大而灵活的引擎进行数据分析。

发布于: 刚刚阅读数: 6
用户头像

InfoQ签约作者 2018-11-30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
Spark SQL基本架构_spark SQL_穿过生命散发芬芳_InfoQ写作社区