Delta Lake 連接器

概觀

此連接器允許在 Presto 中讀取 Delta Lake 表格。此連接器使用 Delta Lake 專案提供的 Delta Standalone Library (DSR) 來讀取表格中繼資料。

組態

若要設定 Delta Lake 連接器,請建立一個目錄屬性檔案 etc/catalog/delta.properties,內容如下,並視情況更換屬性

connector.name=delta
hive.metastore.uri=hostname:port

組態屬性

可使用下列組態屬性

屬性名稱

描述

預設值

hive.metastore.uri

已註冊 Delta Lake 表格的 Hive 中繼存放區的 URI。此連接器依賴 Hive 中繼存放區來尋找 Delta Lake 表格的位置。從指定位置的 Delta 日誌中,會找到表格的結構描述和資料檔案清單。

null

delta.parquet-dereference-pushdown-enabled

啟用將巢狀資料行取消參照下推到表格掃描,以便只選取 struct 資料類型資料行中選取的必要欄位。若要讓此選項正常運作,也請將 experimental.pushdown-dereference-enabled 設定為 true

true

delta.case-sensitive-partitions-enabled

允許以區分大小寫的方式比對已分割資料行的名稱。

true

Delta Lake 連接器會重複使用 Hive 連接器中存在的許多模組。適用於連線能力和安全性的模組,例如 S3、Azure Data Lake、Glue 中繼存放區等。因此,這些模組的組態與 Hive 連接器文件中提供的組態相同。

查詢 Delta Lake 表格

查詢範例

SELECT * FROM sales.apac.sales_data LIMIT 200;

在上述查詢中

  • sales 是指 Delta Lake 目錄。

  • apac 是指 Hive 中繼存放區中的資料庫。

  • sales_data 是指在 apac 資料庫中註冊的 Delta Lake 表格。

如果表格未在 Hive 中繼存放區中註冊,可以使用下列 DDL 命令來註冊。

注意

若要在 Hive 中繼存放區中註冊表格,DDL 中不需要表格的完整結構描述,因為 Delta Lake 連接器會從位於 Delta Lake 表格位置的中繼資料取得結構描述。若要解決 Hive 中繼存放區中沒有資料行錯誤的問題,請提供一個虛擬資料行作為要註冊的 Delta 表格的結構描述。

範例

使用 Delta Lake 連接器,在 apac 結構描述中建立一個名為 sales_data_new 的新 Delta 表格,該表格在名為 db-sa-datasets 的 S3 儲存貯體中具有 Delta Lake 表格位置

CREATE TABLE sales.apac.sales_data_new (dummyColumn INT)
WITH (external_location = 's3://db-sa-datasets/presto/sales_data_new');

若要在 Hive 中繼存放區中註冊已分割的 Delta 表格,請使用與上述相同的 CREATE TABLE。屬性中只需要 external_location,無需在 CREATE TABLE 中指定 partitioned_by

另一個選項是使用表格位置作為表格名稱直接查詢表格。

SELECT * FROM sales."$path$"."s3://db-sa-datasets/presto/sales_data" LIMIT 200;

在上述查詢中,結構描述 $path$ 指出表格名稱是路徑。以 s3://db-sa-datasets/presto/sales_date 給定的表格名稱是 Delta Lake 表格所在的路徑。基於路徑的選項可讓使用者查詢 Delta 表格,而無需在 Hive 中繼存放區中註冊。

若要查詢 Delta Lake 表格的特定快照,請使用快照識別碼作為表格名稱的後綴。

SELECT * FROM sales.apac."sales_data@v4" LIMIT 200;

上述查詢會從表格 sales.apac.sales_data 的快照版本 4 中讀取資料。

若要查詢特定時間的 Delta Lake 表格快照,請將時間戳記指定為表格名稱的後綴。

SELECT * FROM sales.apac."sales_data@t2021-11-18 09:45" LIMIT 200;

上述查詢會從表格 sales.apac.sales_data 中,讀取時間戳記 2021-11-18 09:45:00 的最新快照中的資料。

DROP TABLE sales.apac.sales_data_new;

上述查詢會刪除外部表格 sales.apac.sales_data_new。這只會刪除表格的中繼資料。不會刪除參照的資料目錄。