讀取 Delta Lake 資料表(Synapse 或外部位置)
重要
AKS 上的 Azure HDInsight 於 2025 年 1 月 31 日淘汰。 透過此公告 深入瞭解。
您必須將工作負載移轉至 Microsoft Fabric 或對等 Azure 產品,以避免突然終止工作負載。
重要
這項功能目前為預覽狀態。 Microsoft Azure 預覽版的補充使用規定 包含適用於 Beta 版、預覽版或尚未正式發行之 Azure 功能的更合法條款。 如需此特定預覽的資訊,請參閱 AKS 上的 Azure HDInsight 預覽資訊。 如有問題或功能建議,請在 AskHDInsight 上提交請求,然後追蹤我們以獲取 Azure HDInsight 社群的更多更新。
本文概述如何讀取 Delta Lake 數據表,而不需存取中繼存放區 (Synapse 或其他沒有公用存取權的中繼存放區)。
您可以使用 Trino 搭配 AKS 上的 HDInsight,在資料表上執行下列作業。
- 刪除
- 更新
- 插入
- 合併
先決條件
建立 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 資料表,然後在 Trino 中使用您以 Delta 格式儲存的路徑註冊該資料表。
my_dataframe.write.format("delta").save("abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name")
後續步驟
如何在 Trino 中設定快取