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 兼容性- 在现有仓库上运行未经修改的 Hive 查询。Spark SQL 重用 Hive 前端和 MetaStore,使您能够与现有 Hive 数据、查询和 UDF 完全兼容。只需将其与 Hive 一起安装即可。

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

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

Spark SQL架构

下图解释了 Spark SQL 的架构 -

Spark SQL架构

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

  • 语言 API - Spark 与不同语言和 Spark SQL 兼容。它还受到这些语言 API(python、scala、java、HiveQL)的支持。

  • Schema RDD - Spark Core 设计有称为 RDD 的特殊数据结构。一般来说,Spark SQL 适用于模式、表和记录。因此,我们可以使用Schema RDD作为临时表。我们可以将这个 Schema RDD 称为 Data Frame。

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

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