Trino での Iceberg クラスターの使用
Amazon EMR バージョン 6.6.0 以降では、Iceberg を Trino クラスターで使用できます。
このチュートリアルでは、AWS CLI を使用して Amazon EMR Trino クラスターで Iceberg を操作します。コンソールを使用して Iceberg がインストールされたクラスターを作成するには、「Build an Apache Iceberg data lake using Amazon Athena, Amazon EMR, and AWS Glue
Iceberg クラスターの作成
AWS CLI で Amazon EMR の Iceberg を使用するには、まず以下の手順でクラスターを作成します。AWS CLI を使用して Iceberg 分類を指定する方法については、「クラスター作成時に AWS CLI を使用して設定を指定する」または「クラスター作成時に Java SDK を使用して設定を指定する」を参照してください。
-
以下のコンテンツを含む
configurations.jsonファイルを作成します。例えば、Hive メタストアをカタログとして使用する場合、ファイルには次の内容が含まれている必要があります。[ { "Classification": "trino-connector-iceberg", "Properties": { "connector.name": "iceberg", "hive.metastore.uri": "thrift://localhost:9083" } } ]AWS Glue Data Catalog をストアとして使用する場合、ファイルには次の内容が含まれている必要があります。
[ { "Classification": "trino-connector-iceberg", "Properties": { "connector.name": "iceberg", "iceberg.catalog.type": "glue" } } ] -
次のように設定してクラスターを作成し、サンプルの Amazon S3 バケットパスとキー名を実際の値に置き換えます。
aws emr create-cluster --release-label emr-6.7.0 \ --applications Name=Trino \ --region us-east-1 \ --name My_Trino_Iceberg_Cluster \ --log-uri s3://amzn-s3-demo-bucket\ --configurations file://configurations.json \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=c3.4xlarge InstanceGroupType=CORE,InstanceCount=3,InstanceType=c3.4xlarge \ --use-default-roles \ --ec2-attributes KeyName=<key-name>
Iceberg の Trino セッションの初期化
Trino セッションを初期化するには、次のコマンドを実行します。
trino-cli --catalog iceberg
Iceberg テーブルへの書き込み
次の SQL コマンドを使用してテーブルを作成し、書き込みます。
trino> SHOW SCHEMAS; trino> CREATE TABLE default.iceberg_table ( id int, data varchar, category varchar) WITH ( format = 'PARQUET', partitioning = ARRAY['category', 'bucket(id, 16)'], location = 's3://amzn-s3-demo-bucket/<prefix>') trino> INSERT INTO default.iceberg_table VALUES (1,'a','c1'), (2,'b','c2'), (3,'c','c3');
Iceberg のテーブルからの読み込み
Iceberg テーブルから読み込むには、次のコマンドを実行します。
trino> SELECT * from default.iceberg_table;
Trino で Iceberg を使用するための考慮事項
-
Amazon EMR 6.5 では、Iceberg の Trino Iceberg Catalog ネイティブサポートは提供されていません。Trino には Iceberg v0.11 が必要です。そのため Trino 用の Amazon EMR クラスターを Spark クラスターとは別に起動し、そのクラスターに Iceberg v0.11 をインストールすることをお勧めします。
-
AWS Glue を Iceberg のカタログとして使用する場合は、テーブルを作成するデータベースが AWS Glue に存在することを確認してください。AWS Lake Formation などのサービスを使用していて、カタログを読み込めない場合は、コマンドを実行するためのサービスに適切にアクセスできることを確認してください。
Iceberg Glue 統合は、Redshift Managed Storage カタログでは機能しません。