讀取 Delta Lake 資料表 (Synapse 或外部位置)
注意
AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。
在淘汰日期之前,只有基本支援可用。
重要
此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 Azure HDInsight on AKS 預覽版資訊。 如有問題或功能建議,請在 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")