本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Iceberg 集群与 Trino 结合使用
从亚马逊EMR版本 6.6.0 开始,你可以将 Iceberg 与 Trino 集群一起使用。
在本教程中,您将使用在 Amazon EMR Trino 集群上使用 Iceberg。 Amazon CLI 要使用控制台创建安装了 Iceberg 的集群,请按照使用 Amazon Ath ena、Amazon 和 Glue 构建 Apache Iceberg 数据湖
创建 Iceberg 集群
要将 Amazon 上的 Iceberg EMR 与一起使用 Amazon CLI,请先按照以下步骤创建一个集群。有关使用指定 Iceberg 分类的信息 Amazon CLI,请参阅创建集群 Amazon CLI 时使用提供配置或创建集群SDK时使用 Java 提供配置。
-
创建
iceberg.properties
文件,然后为您选择的目录设置一个值。例如,假设您想将 Hive 元存储作为目录使用,则您的文件应包含以下内容。connector.name=iceberg hive.metastore.uri=thrift://localhost:9083
如果您想使用 Amazon Glue 数据目录作为存储,则您的文件应包含以下内容。
connector.name=iceberg iceberg.catalog.type=glue
-
创建一个会将
iceberg.properties
从 Amazon S3 复制到/etc/trino/conf/catalog/iceberg.properties
的引导操作,如下例所示。有关引导操作的信息,请参阅 创建引导操作以安装其他软件。set -ex sudo aws s3 cp s3://
amzn-s3-demo-bucket
/iceberg.properties /etc/trino/conf/catalog/iceberg.properties -
使用以下配置创建一个集群,将示例引导操作脚本路径和密钥名称替换为您自己的值。
aws emr create-cluster --release-label emr-6.7.0 \ --applications Name=Trino \ --region us-east-1 \ --name My_Trino_Iceberg_Cluster \ --bootstrap-actions '[{"Path":"s3://
amzn-s3-demo-bucket
","Name":"Add iceberg.properties"}]' \ --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;