将 Delta Lake 集群与 Trino 结合使用 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Delta Lake 集群与 Trino 结合使用

从 Amazon EMR 6.9.0 及更高版本开始,您可以将 Delta Lake 与您的 Trino 集群结合使用。

在本教程中,我们将使用在 Amazon EMR Trino 集群上使用 Delta Lake。 Amazon CLI

创建 Delta Lake 集群
  1. 创建文件 delta_configurations.json,然后为您选择的目录设置值。例如,假设您想将 Hive 元存储作为目录使用,则您的文件应包含以下内容:

    [{"Classification":"delta-defaults", "Properties":{"delta.enabled":"true"}}, {"Classification":"trino-connector-delta", "Properties":{"hive.metastore.uri":"thrift://localhost:9083"}}]

    如果您想使用 Amazon Glue 目录作为商店,您的文件应包含以下内容:

    [{"Classification":"delta-defaults", "Properties":{"delta.enabled":"true"}}, {"Classification":"trino-connector-delta", "Properties":{"hive.metastore":"glue"}}]
  2. 使用以下配置创建集群,将 example Amazon S3 bucket pathsubnet ID 替换为您自己的值。

    aws emr create-cluster --release-label emr-6.9.0 --applications Name=Trino --configurations file://delta_configurations.json --region us-east-1 --name My_Spark_Delta_Cluster --log-uri s3://DOC-EXAMPLE-BUCKET/ --instance-type m5.xlarge --instance-count 2 --service-role EMR_DefaultRole_V2 --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0

初始化 Delta Lake 的 Trino 会话

要初始化 Trino 会话,请运行以下命令。

trino-cli --catalog delta

写入 Delta Lake 表

使用以下 SQL 命令创建并写入您的表:

SHOW SCHEMAS; CREATE TABLE default.delta_table (id int, data varchar, category varchar) WITH ( location = 's3://DOC-EXAMPLE-BUCKET/<prefix>'); INSERT INTO default.delta_table VALUES (1,'a','c1'), (2,'b','c2'), (3,'c','c3');

从 Delta Lake 表中读取

使用以下 SQL 命令从您的表中读取:

SELECT * from default.delta_table;