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、Schema 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 数据库。

我们将在后续章节中进一步讨论这些内容。