翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 と統合する
Iceberg クラスターの作成
Iceberg がインストールされたクラスターは、、 AWS Management Console、 AWS CLI または Amazon EMR API を使用して作成できます。このチュートリアルでは、 AWS CLI を使用して Amazon EMR クラスターで Iceberg を操作します。コンソールを使用して Iceberg がインストールされたクラスターを作成するには、「Build an Iceberg data lake using Amazon Athena, Amazon EMR, and AWS Glue
で 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://
amzn-s3-demo-bucket
/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef
Hive Iceberg クラスターは以下のことを行います。
-
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 互換機能に限定されています。以下の コマンドがサポートされています。
-
Amazon EMR リリース 6.9.0~6.12.x では、
libfb303
jar を Hive のauxlib
ディレクトリに配置する必要があります。これを行うには、次のコマンドを使用します。sudo /usr/bin/ln -sf /usr/lib/hive/lib/libfb303-*.jar /usr/lib/hive/auxlib/libfb303.jar
Amazon EMR リリース 6.13 以降では、
libfb303
jar は自動的に Hive のauxlib
ディレクトリにシンボリックリンクされます。 -
テーブルの作成
-
非パーティションテーブル - 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/PARQUET の
STORED AS
ファイル形式は Hive 3 ではサポートされていません。デフォルトで、唯一のオプションは Parquet です。 -
-
テーブルの削除 -
DROP TABLE
コマンドは、次の例のようにテーブルを削除するために使用されます。DROP TABLE [IF EXISTS] table_name [PURGE];
-
テーブルの読み込み - 次の例のように、
SELECT
ステートメントを使用して Hive の Iceberg テーブルを読み込むことができます。サポートされている実行エンジンは MR と Tez です。SELECT * FROM table_name
Hive の select 構文の詳細については、「LanguageManual Select
」を参照してください。Hive で Iceberg テーブルを使用する select ステートメントの詳細については、「Apache Iceberg Select 」を参照してください。 -
テーブルへの挿入 - HiveQL の
INSERT INTO
ステートメントは Map Reduce 実行エンジンのみをサポートする Iceberg テーブルで動作します。Amazon EMR Hive は実行時に Iceberg テーブルのエンジンを選択するため、Amazon EMR ユーザーは実行エンジンを明示的に設定する必要はありません。-
単一テーブルの insert into - 例:
INSERT INTO table_name VALUES ('a', 1); INSERT INTO table_name SELECT...;
-
複数テーブルの insert into - 非アトミック複数テーブル insert into ステートメントがサポートされています。例:
FROM source INSERT INTO table_1 SELECT a, b INSERT INTO table_2 SELECT c,d;
-
Amazon EMR 7.3.0 以降、Hive with Iceberg AWS は Glue データカタログをメタストアとしてサポートしています。 AWS Glue データカタログをメタストアとして使用するには、次のプロパティを設定します。
SET iceberg.catalog.<catalog_name>.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog;
または、次のプロパティを設定することもできます。
SET iceberg.catalog.<catalog_name>.type=glue;
次に、以下の例を使用してテーブルを作成できます。
CREATE EXTERNAL TABLE table_name (col1 type1, col2 type2,..)
ROW FORMAT SERDE 'org.apache.iceberg.mr.hive.HiveIcebergSerDe'
STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
location '<location>'
TBLPROPERTIES ('table_type'='iceberg', 'iceberg.catalog'='<catalog_name>');
Hive で Iceberg を使用するための考慮事項
-
Iceberg は以下のクエリタイプをサポートしています。
-
テーブルの作成
-
Drop table
-
Insert into table
-
Read table
-
-
DML (データ操作言語) 操作では MR (MapReduce) 実行エンジンのみがサポートされており、MR は Hive 3.1.3 で廃止されました。
-
AWS Glue Data Catalog は現在、Hive を使用した Iceberg ではサポートされていません。
-
エラー処理の堅牢性が不十分です。設定に誤りがあっても、insert into クエリが正常に完了する可能性があります。ただし、メタデータの更新に失敗によりデータが失われる可能性があります。
Iceberg Glue の統合は、Redshift マネージドストレージカタログでは機能しません。