Apache Hive の互換性
適用対象: 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 ではサポートされません。