将 Iceberg 集群与 Trino 结合使用 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 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 提供配置

  1. 创建 iceberg.properties 文件,然后为您选择的目录设置一个值。例如,假设您想将 Hive 元存储作为目录使用,则您的文件应包含以下内容。

    connector.name=iceberg hive.metastore.uri=thrift://localhost:9083

    如果您想使用 AWS Glue 数据目录作为存储,则您的文件应包含以下内容。

    connector.name=iceberg iceberg.catalog.type=glue
  2. 创建一个会将 iceberg.properties 从 Amazon S3 复制到 /etc/trino/conf/catalog/iceberg.properties 的引导操作,如下例所示。有关引导操作的信息,请参阅 创建引导操作以安装其他软件

    set -ex sudo aws s3 cp s3://DOC-EXAMPLE-BUCKET/iceberg.properties /etc/trino/conf/catalog/iceberg.properties
  3. 使用以下配置创建一个集群,将示例引导操作脚本路径和密钥名称替换为您自己的值。

    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://DOC-EXAMPLE-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://DOC-EXAMPLE-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;