Apache Hive の互換性

適用対象:check marked yes Databricks Runtime

Azure Databricks の Apache Spark SQL は、メタストア接続性、SerDes、UDF など、Apache Hive と互換性を持つように設計されています。

SerDes と UDF

Hive SerDes と UDF は、Hive 1.2.1 に基づきます。

メタストア接続

Azure Databricks を外部的にホストされた Hive メタストアに接続する方法については、外部 Apache Hive メタストア (レガシ) に関するページを参照してください。

サポートされている Hive 機能

Spark SQL は、次のような Hive 機能の大部分をサポートしています。

  • 次を含む Hive クエリ ステートメント。
    • 選択
    • GROUP BY
    • ORDER BY
    • CLUSTER BY
    • SORT BY
  • 次を含むすべての Hive 式。
    • 関係式 (===<><>>=<= など)
    • 算術式 (+-*/% など)
    • 論理式 (AND、&&、OR、|| など)
    • 複合型コンストラクター
    • 数式 (符号、ln、cos など)
    • 文字列式 (instr、length、printf など)
  • ユーザー定義関数 (UDF)
  • ユーザー定義集計関数 (UDAF)
  • ユーザー定義シリアル化形式 (SerDes)
  • ウィンドウ関数
  • 結合
    • JOIN
    • {LEFT|RIGHT|FULL} OUTER JOIN
    • LEFT SEMI JOIN
    • CROSS JOIN
  • 和集合
  • サブクエリ
    • SELECT col FROM ( SELECT a + b AS col from t1) t2
  • サンプリング
  • EXPLAIN
  • 動的パーティション挿入を含むパーティション テーブル
  • 表示
  • 次を含む DDL ステートメントの大部分。
    • CREATE TABLE
    • CREATE TABLE AS SELECT
    • ALTER TABLE
  • 次を含む Hive データ型のほとんど。
    • TINYINT
    • SMALLINT
    • INT
    • BIGINT
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY
    • TIMESTAMP
    • DATE
    • ARRAY<>
    • MAP<>
    • STRUCT<>

サポートされていない Hive 機能

次のセクションには、Spark SQL でサポートされていない Hive の機能の一覧が含まれます。 これらの機能の大部分は、Hive デプロイではほとんど使用されません。

Hive の主な機能

  • Hive によって作成されたバケット テーブルへの書き込み
  • ACID の細かい更新

難解な Hive の機能

  • 共用体型
  • 一意の結合
  • 列統計の収集: Spark SQL では、現時点では列統計を収集するピギーバック方式のスキャンは実行されません。Hive メタストアの sizeInBytes フィールドの読み込みのみをサポートします

Hive 入力形式と出力形式

  • CLI のファイル形式: CLI に表示される結果の場合、Spark SQL は、TextOutputFormat のみをサポートします
  • Hadoop アーカイブ

Hive の最適化

Spark には、一部の Hive 最適化は含まれていません。 これらの一部 (インデックスなど) は、Spark SQL がメモリ内計算モデルであるため、それほど重要ではありません。

  • ブロック レベルのビットマップ インデックスと仮想列 (インデックスの作成に使用されます)。
  • 結合と groupbys の Reducer の数を自動的に決定する: Spark SQL では、SET spark.sql.shuffle.partitions=[num_tasks]; を使用して、シャッフル後の並列処理の次数を制御する必要があります。
  • 傾斜データ フラグ: Spark SQL は Hive の傾斜データ フラグに従いません。
  • 結合内の STREAMTABLE ヒント: Spark SQL は STREAMTABLE ヒントに従いません。
  • クエリ結果に対して複数の小さなファイルをマージする: 結果出力に複数の小さなファイルが含まれている場合、Hive では、必要に応じて HDFS メタデータのオーバーフローを回避するために、小さいファイルを少数の大きなファイルにマージできます。 Spark SQL ではサポートされません。