

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 Delta Lake 叢集與 Trino 搭配使用
<a name="Deltacluster-trino"></a>

使用 Amazon EMR 6.9.0 版及更高版本，您可以將 Delta Lake 與 Trino 叢集搭配使用。

在本教學課程中，我們將使用 AWS CLI 在 Amazon EMR Trino 叢集上使用 Delta Lake。

## 
<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 Catalog 做為您的存放區，您的檔案應具有下列內容：

   ```
   [{"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;
```