Spark SQL 简介


Spark 引入了一个用于结构化数据处理的编程模块,称为 Spark SQL。它提供了一个称为 DataFrame 的编程抽象,可以充当分布式 SQL 查询引擎。

Spark SQL 的特点


以下是 Spark SQL 的特点:

  • 融合的 : 将 SQL 查询与 Spark 程序无缝混合。 Spark SQL 允许你在 Spark 中将结构化数据作为分布式数据集 (RDD) 查询,并在 Python、Scala 和 Java 中集成 API。这种紧密的集成使得 SQL 查询与复杂的分析算法一起运行变得容易。

  • 统一数据访问 : 从多种来源加载和查询数据。 Schema-RDD 为高效处理结构化数据提供了单一界面,包括 Apache Hive 表、parquet 文件和 JSON 文件。

  • 蜂巢兼容性 : 在现有仓库上运行未修改的 Hive 查询。 Spark SQL 重用 Hive 前端和 MetaStore,让你与现有的 Hive 数据、查询和 UDF 完全兼容。只需将其安装在 Hive 旁边即可。

  • 标准连接 : 通过 JDBC 或 ODBC 连接。 Spark SQL 包括具有行业标准 JDBC 和 ODBC 连接的服务器模式。

  • 可扩展性 :对交互式查询和长查询使用相同的引擎。 Spark SQL 利用 RDD 模型来支持中间查询容错,使其也可以扩展到大型作业。不要担心为历史数据使用不同的引擎。

Spark SQL 架构


下图解释了 Spark SQL 的架构:

Spark SQL Architecture

该架构包含三层,即语言 API、Schema RDD 和数据源。

  • 语言 API : Spark兼容不同的语言和Spark SQL。这些语言也支持它——API(python、scala、java、HiveQL)。

  • 模式 RDD : Spark Core 设计了一种特殊的数据结构,称为 RDD。通常,Spark SQL 适用于模式、表和记录。因此,我们可以使用 Schema RDD 作为临时表。我们可以将此 Schema RDD 称为 Data Frame。

  • 数据源 : 通常spark-core的Data source是文本文件、Avro文件等,但是Spark SQL的Data Sources不同。这些是 Parquet 文件、JSON 文档、HIVE 表和 Cassandra 数据库。

我们将在随后的章节中详细讨论这些内容。