

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

# 将 Delta Lake 集群与 Trino 结合使用
<a name="Deltacluster-trino"></a>

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

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

## 
<a name="Deltacluster-trino-create"></a>

**创建 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"}}]
   ```

   如果您想使用 AWS Glue 目录作为商店，您的文件应包含以下内容：

   ```
   [{"Classification":"delta-defaults",  
       "Properties":{"delta.enabled":"true"}},  
       {"Classification":"trino-connector-delta",  
       "Properties":{"hive.metastore":"glue"}}]
   ```

1. 使用以下配置创建集群，将 **example Amazon S3 bucket path** 和 **subnet 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://amzn-s3-demo-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 会话
<a name="Deltainitialize-trino"></a>

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

```
trino-cli --catalog delta
```

## 写入 Delta Lake 表
<a name="Deltatrino-write-table"></a>

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

```
SHOW SCHEMAS;

CREATE TABLE default.delta_table (id  int, data varchar, category varchar) WITH 
( location =  's3://amzn-s3-demo-bucket/<prefix>');

INSERT INTO default.delta_table VALUES  (1,'a','c1'), (2,'b','c2'), (3,'c','c3');
```

## 从 Delta Lake 表中读取
<a name="Deltatrino-read-table"></a>

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

```
SELECT * from default.delta_table;
```