將 Iceberg 叢集與 Trino 搭配使用 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Iceberg 叢集與 Trino 搭配使用

從 Amazon EMR 6.6.0 版開始,您可以將 Iceberg 與 Trino 叢集搭配使用。

在本教學課程中,您會使用 AWS CLI 在 Amazon EMR Trino 叢集上使用 Iceberg。若要使用主控台建立已安裝 Iceberg 的叢集,請遵循使用 Amazon Athena、Amazon EMR 和 AWS Glue 建置 Apache Iceberg 資料湖中的步驟進行。

建立 Iceberg 叢集

若要在 Amazon EMR 上使用 Iceberg AWS CLI,請先使用下列步驟建立叢集。如需使用 指定 Iceberg 分類的資訊 AWS CLI,請參閱 當您建立叢集 AWS CLI 時,使用 提供組態在建立叢集時使用 Java SDK 提供組態

  1. 使用下列內容建立 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" } } ]
  2. 使用下列組態建立叢集,將範例 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;

將 Iceberg 與 Trino 搭配使用的考量

  • Amazon EMR 6.5 不會以原生方式提供對 Iceberg 的 Trino Iceberg Catalog 支援。Trino 需要使用 Iceberg v0.11,因此建議為 Trino 啟動獨立於 Spark 叢集的 Amazon EMR 叢集,並在該叢集上包含 Iceberg v0.11。

  • 使用 AWS Glue 做為 Iceberg 的目錄時,請確定您在其中建立資料表的資料庫存在於 Glue AWS 中。如果您使用的是 服務, AWS Lake Formation 但無法載入目錄,請確定您有權存取該服務來執行 命令。

  • Iceberg Glue 整合不適用於 Redshift 受管儲存目錄。