Apache Hive の互換性 Apache Hive Compatibility

Azure Databricks の Apache Spark SQL は、metastore connectivity、SerDes、Udf など、Apache Hive との互換性を確保するように設計されています。Apache Spark SQL in Azure Databricks is designed to be compatible with the Apache Hive, including metastore connectivity, SerDes, and UDFs.

SerDes と UdfSerDes and UDFs

Hive SerDes と Udf は Hive 1.2.1 に基づいています。Hive SerDes and UDFs are based on Hive 1.2.1.

Metastore 接続Metastore connectivity

外部でホストされる Hive metastore に Azure Databricks を接続する方法については、「 External Apache Hive Metastore 」を参照してください。See External Apache Hive Metastore for information on how to connect Azure Databricks to an externally hosted Hive metastore.

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

Spark SQL では、次のようなほとんどの Hive 機能がサポートされています。Spark SQL supports the vast majority of Hive features, such as:

  • Hive クエリステートメント (次を含む)Hive query statements, including:
    • SELECTSELECT
    • GROUP BYGROUP BY
    • ORDER BYORDER BY
    • クラスター化CLUSTER BY
    • 並べ替えSORT BY
  • すべての Hive 式 (次を含む)All Hive expressions, including:
    • リレーショナル式 (===<><>>=<= など)Relational expressions (=, , ==, <>, <, >, >=, <=, etc)
    • 算術式 (+-*/% など)Arithmetic expressions (+, -, *, /, %, etc)
    • 論理式 (AND、& &、OR、| | など)Logical expressions (AND, &&, OR, ||, etc)
    • 複合型コンストラクターComplex type constructors
    • 数学式 (sign、ln、cos など)Mathematical expressions (sign, ln, cos, etc)
    • 文字列式 (instr、length、printf など)String expressions (instr, length, printf, etc)
  • ユーザー定義関数 (UDF)User defined functions (UDF)
  • ユーザー定義集計関数 (UDAF)User defined aggregation functions (UDAF)
  • ユーザー定義のシリアル化形式 (SerDes)User defined serialization formats (SerDes)
  • ウィンドウ機能Window functions
  • 結合Joins
    • JOINJOIN
    • {LEFT |RIGHT |FULL} 外部結合{LEFT|RIGHT|FULL} OUTER JOIN
    • 左半結合LEFT SEMI JOIN
    • クロス結合CROSS JOIN
  • 結合Unions
  • サブクエリSub-queries
    • 列の選択 (t1 から列を選択) t2SELECT col FROM ( SELECT a + b AS col from t1) t2
  • サンプリングSampling
  • EXPLAINExplain
  • 動的なパーティション挿入を含むパーティションテーブルPartitioned tables including dynamic partition insertion
  • 表示View
  • 次のような多くの DDL ステートメントがあります。Vast majority of DDL statements, including:
    • CREATE TABLECREATE TABLE
    • CREATE TABLE AS SELECTCREATE TABLE AS SELECT
    • ALTER TABLEALTER TABLE
  • 以下を含むほとんどの Hive データ型。Most Hive data types, including:
    • TINYINTTINYINT
    • SMALLINTSMALLINT
    • INTINT
    • BIGINTBIGINT
    • BOOLEANBOOLEAN
    • FLOATFLOAT
    • DOUBLEDOUBLE
    • STRINGSTRING
    • BINARYBINARY
    • TIMESTAMPTIMESTAMP
    • DATEDATE
    • 配列 < >ARRAY<>
    • マップ < >MAP<>
    • 構造体 < >STRUCT<>

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

Spark SQL でサポートされていない Hive 機能の一覧を以下に示します。Below is a list of Hive features that Spark SQL doesn’t support. これらの機能のほとんどは、Hive のデプロイではほとんど使用されません。Most of these features are rarely used in Hive deployments.

主な Hive 機能Major Hive features

  • Hive によって作成されたバケット化テーブルへの書き込みWriting to bucketed table created by Hive
  • ACID 詳細な更新ACID fine-grained updates

複雑 Hive の機能Esoteric Hive features

  • 共用体型Union type
  • 一意の結合Unique join
  • 列の統計情報の収集: Spark SQL では、現時点で列の統計情報を収集するためにスキャンが便乗されることはなく、Hive metastore の sizeInBytes フィールドの読み込みのみがサポートされますColumn statistics collecting: Spark SQL does not piggyback scans to collect column statistics at the moment and only supports populating the sizeInBytes field of the Hive metastore

Hive の入力形式と出力形式Hive input and output formats

  • CLI のファイル形式: CLI に戻ると表示される結果については、Spark SQL では TextOutputFormat のみがサポートされます。File format for CLI: For results showing back to the CLI, Spark SQL supports only TextOutputFormat
  • Hadoop アーカイブHadoop archive

Hive の最適化Hive optimizations

いくつかの Hive 最適化は Spark に含まれていません。A handful of Hive optimizations are not included in Spark. Spark SQL のメモリ内計算モデルにより、これらの一部 (インデックスなど) の重要性は低くなります。Some of these (such as indexes) are less important due to Spark SQL’s in-memory computational model.

  • ブロックレベルのビットマップインデックスと仮想列 (インデックスの作成に使用されます)。Block level bitmap indexes and virtual columns (used to build indexes).
  • 結合と groupbys のレジューサーの数を自動的に決定する: Spark SQL では、SET spark.sql.shuffle.partitions=[num_tasks]; を使用して、並列処理の次数を制御する必要があります。Automatically determine the number of reducers for joins and groupbys: In Spark SQL, you need to control the degree of parallelism post-shuffle using SET spark.sql.shuffle.partitions=[num_tasks];.
  • データの傾斜フラグ: Spark SQL は Hive の傾斜データフラグに従っていません。Skew data flag: Spark SQL does not follow the skew data flag in Hive.
  • join の STREAMTABLE ヒント: Spark SQL は、STREAMTABLE ヒントに従っていません。STREAMTABLE hint in join: Spark SQL does not follow the STREAMTABLE hint.
  • クエリ結果に対して複数の小さいファイルをマージする: 結果出力に複数の小さいファイルが含まれている場合は、必要に応じて小さいファイルを少数の大きなファイルにマージして、HDFS メタデータのオーバーフローを回避できます。Merge multiple small files for query results: if the result output contains multiple small files, Hive can optionally merge the small files into fewer large files to avoid overflowing the HDFS metadata. Spark SQL では、これはサポートされていません。Spark SQL does not support that.