Delta Lake テーブルを読み込む (Synapse または外部の場所)

重要

現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加使用条件」に記載されています。 この特定のプレビューの詳細については、「Azure HDInsight on AKS のプレビュー情報」を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新については、Azure HDInsight コミュニティのフォローをお願いいたします。

この記事では、メタストア (Synapse またはパブリック アクセスのない他のメタストア) にアクセスせずに Delta Lake テーブルを読み取る方法の概要について説明します。

AKS で Trino と HDInsight を使用して、テーブルに対して次の操作を実行できます。

  • DELETE
  • UPDATE
  • INSERT
  • MERGE

前提条件

Delta Lake スキーマとテーブルを作成する

このセクションでは、Delta Lake カタログが既に構成されている場合に、既存の場所に対して Delta テーブルを作成する方法について説明します。

  1. Azure portal の Storage browser を使用して、テーブルのベース ディレクトリがあるストレージ アカウントを参照します。 このテーブルが Synapse で生成される場合は、synapse/workspaces/.../warehouse/ パスの下にある可能性が高く、テーブルの名前が付けられ、_delta_log ディレクトリが含まれます。 フォルダーの横にある 3 つのドットから Copy URL を選択します。

    この http パスを ABFS (Azure Blob File System) パスに変換する必要があります:

    ストレージの 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 テーブルとして保存し、データフレームをデルタ形式として保存したパスを使用して、Trino にテーブルを登録できます。

my_dataframe.write.format("delta").save("abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name")

次のステップ

Trino でキャッシュを構成する方法