共用方式為


Apache Hive 相容性

適用於: 核取記號為「是」 Databricks Runtime

Azure Databricks 中的 Apache Spark SQL 的設計目的是要與 Apache Hive 相容,包括中繼存放區連線能力、SerDes 和 UDF。

SerDes 和 UDF

Hive SerDes 和 UDF 是以 Hive 1.2.1 為基礎。

中繼存放區連線能力

如需如何將 Azure Databricks 連線至外部裝載 Hive 中繼存放區的資訊,請參閱 外部 Apache Hive 中繼存放區(舊版 )。

支援的Hive功能

Spark SQL 支持絕大多數 Hive 功能,例如:

  • Hive 查詢語句,包括:
    • SELECT
    • GROUP BY
    • 排序依據
    • CLUSTER BY
    • 排序依據
  • 所有 Hive 運算式,包括:
    • 關係運算式(=、、、、==<<=>=<>>
    • 算術表示式 (+、 、 -*、 、 /%
    • 邏輯表達式 (AND、&&、OR、||等等)
    • 複雜類型建構函式
    • 數學運算式(符號、ln、cos 等)
    • 字串表示式(instr、length、printf 等)
  • 使用者定義函數 (UDF)
  • 使用者定義聚合函數 (UDAF)
  • 使用者定義的串行化格式 (SerDes)
  • 視窗函式
  • 加入
    • JOIN
    • {LEFT|RIGHT|FULL} 外部聯接
    • LEFT SEMI JOIN
    • CROSS JOIN
  • 等位
  • 子查詢
    • SELECT col FROM ( SELECT a + b AS col from t1) t2
  • 取樣
  • 解說
  • 數據分割數據表,包括動態數據分割插入
  • 檢視
  • 絕大多數 DDL 語句,包括:
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • 大部分的Hive資料類型,包括:
    • TINYINT
    • SMALLINT
    • INT
    • BIGINT
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • 字串
    • BINARY
    • timestamp
    • 日期
    • 陣列<>
    • 地圖<>
    • 結構<>

不支援的Hive功能

下列各節包含 Spark SQL 不支援的 Hive 功能清單。 大部分的功能很少用於Hive部署。

主要 Hive 功能

  • 寫入Hive所建立的貯體數據表
  • ACID 細部更新

Esoteric Hive 功能

  • 等位類型
  • 唯一聯結
  • 數據行統計數據收集:Spark SQL 目前不會進行回溯掃描以收集數據行統計數據,而且只支援填入 Hive 中繼存放區的大小InBytes 欄位

Hive 輸入和輸出格式

  • CLI 的檔案格式:針對顯示回 CLI 的結果,Spark SQL 僅支援 TextOutputFormat
  • Hadoop 封存

Hive 優化

Spark 中未包含少數 Hive 優化。 其中一些(例如索引)較不重要,因為 Spark SQL 的記憶體內部計算模型。

  • 區塊層級位圖索引和虛擬數據行(用來建置索引)。
  • 自動判斷聯結和 groupbys 的歸納器數目:在 Spark SQL 中,您需要使用 SET spark.sql.shuffle.partitions=[num_tasks];來控制平行處理原則的隨機處理程度。
  • 扭曲數據旗標:Spark SQL 不會遵循Hive中的扭曲數據旗標。
  • STREAMTABLE 聯結中的提示:Spark SQL 不會遵循 STREAMTABLE 提示。
  • 合併多個小型檔案以取得查詢結果:如果結果輸出包含多個小型檔案,Hive 可以選擇性地將小型檔案合併成較少的大型檔案,以避免 HDFS 元數據溢位。 Spark SQL 不支援。