Hive で Iceberg クラスターを使用する - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Hive で Iceberg クラスターを使用する

Amazon EMR バージョン 6.9.0 以降では、オープンソースの Iceberg Hive インテグレーションに必要なセットアップ手順を実行しなくても、Hive クラスターで Iceberg を使用できます。Amazon EMR バージョン 6.8.0 以前では、ブートストラップアクションを使用してiceberg-hive-runtime jar をインストールし、Hive を Iceberg サポート用に設定できます。

Amazon EMR 6.9.0 には、Hive 3.1.3 と Iceberg 0.14.1 を統合するための機能がすべて含まれています。また、サポートされている実行エンジンを実行時にauto 選択する(EKS 6.9.0 の Amazon EMR)などの Amazon EMR の追加機能も含まれています。

アイスバーグクラスターの作成

Iceberg がインストールされたクラスターはAWS Management Console、、、、、、Amazon EMR API を使用して作成できます。AWS CLIこのチュートリアルでは、を使用して Amazon EMR クラスターで Iceberg を操作します。AWS CLIコンソールを使用して Iceberg がインストールされたクラスターを作成するには、「Amazon Athena、Amazon EMR、AWS Glue を使用して Iceberg データレイクを構築する」の手順に従ってください。

Amazon EMR で Iceberg をとともに使用するにはAWS CLI、まず以下の手順を使用してクラスターを作成します。AWS CLIまたは Java SDK を使用して Iceberg 分類を指定する方法については、クラスター作成時に AWS CLI を使用して設定を指定するまたはを参照してくださいクラスター作成時に Java SDK を使用して設定を指定する。以下の内容で configurations.json という名前のファイルを作成します。

[{ "Classification":"iceberg-defaults", "Properties":{"iceberg.enabled":"true"} }]

次に、以下の設定でクラスターを作成し、例の Amazon S3 バケットパスとサブネット ID を独自のものに置き換えます。

aws emr create-cluster --release-label emr-6.9.0 \ --applications Name=Hive \ --configurations file://iceberg_configurations.json \ --region us-east-1 \ --name My_hive_Iceberg_Cluster \ --log-uri s3://DOC-EXAMPLE-BUCKET/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef

Hive アイスバーグクラスターは以下のことを行います。

  • Iceberg Hive ランタイム JAR を Hive にロードし、Hive エンジンの Iceberg 関連の設定を有効にします。

  • Amazon EMR Hive の動的実行エンジン選択を有効にして、ユーザーが Iceberg 互換のサポート対象実行エンジンを設定できないようにします。

注記

Hive Iceberg クラスターは現在AWS Glue データカタログをサポートしていません。デフォルトの Iceberg カタログはでHiveCatalog、これは Hive 環境用に設定されたメタストアに対応しています。カタログ管理の詳細については、Apache Hive ドキュメントの「カタログ管理」を参照してください

機能のサポート

Amazon EMR 6.9.0 は Hive 3.1.3 と Iceberg 0.14.1 をサポートしています。この機能サポートは、Hive 3.1.2 と 3.1.3 の Iceberg 互換機能に限定されています。以下の コマンドがサポートされています。

  • テーブルの作成

    • 分割されていないテーブル — Hive の外部テーブルは、次のようにストレージハンドラーを提供することで作成できます。

      CREATE EXTERNAL TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
    • 分割テーブル — Hive の外部分割テーブルは次のように作成できます。

      CREATE EXTERNAL TABLE x (i int) PARTITIONED BY (j int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
    注記

    ORC/AVRO/PARQUETSTORED AS のファイル形式は Hive 3 ではサポートされていません。デフォルトで、唯一のオプションはParquetです。

  • テーブルの削除DROP TABLE このコマンドは、次の例のようにテーブルを削除するために使用されます。

    DROP TABLE [IF EXISTS] table_name [PURGE];
  • テーブルの読み込み — 次の例のように、SELECTステートメントを使用して Hive の Iceberg テーブルを読み取ることができます。サポートされる実行エンジンは MR と Tez です。

    SELECT * FROM table_name

    Hive の選択構文については、「LanguageManual 選択」を参照してください。Hive の Iceberg テーブルを使用した SELECT ステートメントの詳細については、「Apache アイスバーグセレクト」 を参照してください。

  • テーブルへの挿入 — HiveQLINSERT INTO のステートメントは、Map Reduce 実行エンジンをサポートしている Iceberg テーブルでのみ機能します。Amazon EMR Hive は実行時に Iceberg テーブルのエンジンを選択するため、Amazon EMR ユーザーは実行エンジンを明示的に設定する必要はありません。

    • 単一テーブルへの挿入 — 例:

      INSERT INTO table_name VALUES ('a', 1); INSERT INTO table_name SELECT...;
    • マルチテーブル挿入 — ステートメントへの非アトミックなマルチテーブル挿入がサポートされています。例:

      FROM source INSERT INTO table_1 SELECT a, b INSERT INTO table_2 SELECT c,d;