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 Architecture

此架構包含三個層,即語言 API、Schema RDD 和資料來源。

  • 語言 API - Spark 與不同的語言和 Spark SQL 相容。它也受以下語言支援 - API(python、scala、java、HiveQL)。

  • Schema RDD - Spark Core 是用名為 RDD 的特殊資料結構設計的。通常,Spark SQL 處理模式、表和記錄。因此,我們可以使用 Schema RDD 作為臨時表。我們可以將此 Schema RDD 稱為 DataFrame。

  • 資料來源 - 通常,spark-core 的資料來源是文字檔案、Avro 檔案等。但是,Spark SQL 的資料來源不同。它們是 Parquet 檔案、JSON 文件、HIVE 表和 Cassandra 資料庫。

我們將在後續章節中詳細討論這些內容。

廣告