分享方式:


讀取 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 資料表。

  1. 使用 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/

  2. 在 Trino 中建立 Delta Lake 結構描述。

    CREATE SCHEMA delta.default;
    

    或者,您也可以在特定儲存體帳戶中建立結構描述:

    CREATE SCHEMA delta.default WITH (location = 'abfss://container@storageaccount.dfs.core.windows.net/trino/');
    
  3. 使用 register_table 程序建立資料表

    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/');
    
  4. 查詢要驗證的資料表。

    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")

下一步

如何在 Trino 中設定快取