Delta Lake テーブルを読み込む (Synapse または外部の場所)
Note
Azure HDInsight on AKS は 2025 年 1 月 31 日に廃止されます。 2025 年 1 月 31 日より前に、ワークロードを Microsoft Fabric または同等の Azure 製品に移行することで、ワークロードの突然の終了を回避する必要があります。 サブスクリプション上に残っているクラスターは停止され、ホストから削除されることになります。
提供終了日までは基本サポートのみが利用できます。
重要
現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、「Microsoft HDInsight on AKS のプレビュー情報」を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新については、Azure HDInsight コミュニティのフォローをお願いいたします。
この記事では、メタストア (Synapse またはパブリック アクセスのない他のメタストア) にアクセスせずに Delta Lake テーブルを読み取る方法の概要について説明します。
AKS で Trino と HDInsight を使用して、テーブルに対して次の操作を実行できます。
- DELETE
- UPDATE
- INSERT
- MERGE
前提条件
Delta Lake スキーマとテーブルを作成する
このセクションでは、Delta Lake カタログが既に構成されている場合に、既存の場所に対して Delta テーブルを作成する方法について説明します。
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/
Trino で Delta Lake スキーマを作成します。
CREATE SCHEMA delta.default;
または、特定のストレージ アカウントにスキーマを作成することもできます:
CREATE SCHEMA delta.default WITH (location = 'abfss://container@storageaccount.dfs.core.windows.net/trino/');
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/');
テーブルにクエリを実行して確認します。
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")