

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

# Trino での Iceberg クラスターの使用
<a name="emr-iceberg-use-trino-cluster"></a>

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](https://aws.amazon.com/blogs//big-data/build-an-apache-iceberg-data-lake-using-amazon-athena-amazon-emr-and-aws-glue/)」の手順に従ってください。

## Iceberg クラスターの作成
<a name="emr-iceberg-create-cluster-trino"></a>

で Amazon EMR で Iceberg を使用するには AWS CLI、まず次のステップでクラスターを作成します。を使用して Iceberg 分類を指定する方法については AWS CLI、[クラスターの作成 AWS CLI 時に を使用して設定を指定する](emr-configure-apps-create-cluster.md#emr-configure-apps-create-cluster-cli)「」または「」を参照してください[クラスター作成時に Java SDK を使用して設定を指定する](emr-configure-apps-create-cluster.md#emr-configure-apps-create-cluster-sdk)。

1. 以下のコンテンツを含む `configurations.json` ファイルを作成します。例えば、Hive メタストアをカタログとして使用する場合、ファイルには次の内容が含まれている必要があります。

   ```
   [
     {
       "Classification": "trino-connector-iceberg",
       "Properties": {
         "connector.name": "iceberg",
         "hive.metastore.uri": "thrift://localhost:9083"
       }
     }
   ]
   ```

    AWS Glue データカタログをストアとして使用する場合は、ファイルに次のコンテンツが含まれている必要があります。

   ```
   [
     {
       "Classification": "trino-connector-iceberg",
       "Properties": {
         "connector.name": "iceberg",
         "iceberg.catalog.type": "glue"
       }
     }
   ]
   ```

   Amazon EMR 7.7.0 以降、プロパティ *fs.native-s3.enabled=true* を含めます。

   ```
   [
     { 
       "Classification": "trino-connector-iceberg",
       "Properties": {
         "connector.name": "iceberg",
         "iceberg.catalog.type": "glue",
         "fs.native-s3.enabled": "true"
       }           
     }                 
   ]
   ```

1. 次のように設定してクラスターを作成し、サンプルの 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 セッションの初期化
<a name="emr-iceberg-initialize-trino"></a>

Trino セッションを初期化するには、次のコマンドを実行します。

```
trino-cli --catalog iceberg
```

## Iceberg テーブルへの書き込み
<a name="emr-iceberg-write-to-table-trino"></a>

次の 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 のテーブルからの読み込み
<a name="emr-iceberg-read-from-table-trino"></a>

Iceberg テーブルから読み込むには、次のコマンドを実行します。

```
trino> SELECT * from default.iceberg_table;
```

## Trino で Iceberg を使用するための考慮事項
<a name="trino-considerations"></a>
+ Amazon EMR 6.5 では、Iceberg の Trino Iceberg Catalog ネイティブサポートは提供されていません。Trino には Iceberg v0.11 が必要です。そのため Trino 用の Amazon EMR クラスターを Spark クラスターとは別に起動し、そのクラスターに Iceberg v0.11 をインストールすることをお勧めします。
+ Iceberg のカタログとして AWS Glue を使用する場合は、テーブルを作成するデータベースが Glue AWS に存在することを確認してください。などのサービスを使用して AWS Lake Formation いて、カタログをロードできない場合は、 コマンドを実行するためのサービスへの適切なアクセス権があることを確認してください。
+ Iceberg Glue 統合は、Redshift Managed Storage カタログでは機能しません。