讀取 Delta Lake 資料表 (Synapse 或外部位置)
重要
此功能目前為預覽功能。 適用於 Microsoft Azure 預覽版的補充使用規定包含適用於 Beta 版、預覽版或尚未發行至正式運作之 Azure 功能的更合法條款。 如需此特定預覽的相關信息,請參閱 AKS 預覽資訊的 Azure HDInsight。 如需問題或功能建議,請在 AskHDInsight 上提交要求,並提供詳細數據,並遵循我們在 Azure HDInsight 社群上取得更多更新。
本文概述如何讀取 Delta Lake 資料表,而不需存取中繼存放區 (Synapse 或其他沒有公用存取權的中繼存放區)。
您可以搭配 AKS 上的 HDInsight 使用 Trino,在資料表上執行下列作業。
- DELETE
- UPDATE
- INSERT
- MERGE
必要條件
建立 Delta Lake 結構描述和資料表
本節說明如何在您已設定 Delta Lake 目錄的情況下,在既有位置上建立 Delta 資料表。
使用 Azure 入口網站中的
Storage browser
瀏覽儲存體帳戶,前往資料表所在的基底目錄位置。 如果此資料表源自 Synapse,很可能位於synapse/workspaces/.../warehouse/
路徑下,且會以您的資料表命名,並包含_delta_log
目錄。 從位於資料夾旁的三個點選取Copy URL
。您必須將此 HTTP 路徑轉換成 ABFS (Azure Blob 檔案系統) 路徑:
儲存體 HTTP 路徑的結構如下:
https://{{AZURE_STORAGE_ACCOUNT}}.blob.core.windows.net/{{AZURE_STORAGE_CONTAINER}}/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
ABFS 路徑必須如下所示:
abfss://{{AZURE_STORAGE_CONTAINER}}@{{AZURE_STORAGE_ACCOUNT}}.dfs.core.windows.net/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
範例:
abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/
在 Trino 中建立 Delta Lake 結構描述。
CREATE SCHEMA delta.default;
或者,您也可以在特定儲存體帳戶中建立結構描述:
CREATE SCHEMA delta.default WITH (location = 'abfss://container@storageaccount.dfs.core.windows.net/trino/');
-
CALL delta.system.register_table(schema_name => 'default', table_name => 'table_name', table_location => 'abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/');
查詢要驗證的資料表。
SELECT * FROM delta.default.table_name
在 Synapse Spark 中寫入 Delta Lake 資料表
使用 format("delta")
將資料框架儲存為 Delta 資料表,然後使用將資料框架儲存為 Delta 格式的路徑,在 Trino 中註冊資料表。
my_dataframe.write.format("delta").save("abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name")