本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 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 提供組態。
-
使用下列內容建立
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;
將 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 受管儲存目錄。