本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Iceberg 集群与 Trino 结合使用
从 Amazon EMR 版本 6.6.0 开始,您可以将 Iceberg 用于您的 Trino 集群。
在本教程中,您将使用在 Amazon EMR Trino 集群上使用 Iceberg。 AWS CLI 要使用控制台创建安装了 Iceberg 的集群,请按照使用 Amazon Athena、Amazon EMR 和 AWS Glue 构建 Apache Iceberg 数据湖
创建 Iceberg 集群
要将 Amazon EMR 上的 Iceberg 与一起 AWS CLI使用,请先按照以下步骤创建一个集群。有关使用指定 Iceberg 分类的信息 AWS CLI,请参阅创建集群 AWS CLI 时使用提供配置或在创建集群时,使用 Java SDK 提供配置。
-
创建
iceberg.properties
文件,然后为您选择的目录设置一个值。例如,假设您想将 Hive 元存储作为目录使用,则您的文件应包含以下内容。connector.name=iceberg hive.metastore.uri=thrift://localhost:9083
如果您想使用 AWS 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;
将 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 托管存储目录。