概要
Azure Data Factory(ADF)の Azure Databricks Delta Lake connector にて Unity Catalog を利用する方法を紹介します。ADF の UI ではカタログを選択することができませんが、クラスターの初期カタログの設定を変更することで UC を利用できるようです。
Azure Databricks Delta Lake connector では既存の汎用クラスターを利用することとなるため、Databricks のクラスターにて次のような設定を行います。
Databricks Unity Catalog の2つのテーブルによりコピーアクティビティを実行したところ正常終了しました。
本記事では、検証手順を紹介します。
検証手順
1. 事前準備
下記のリソースを作成して、それぞれの認証設定を実施する。
- Azure Data Factory
- Databricks
- Azure Storage (ADF 実行時のステージング用)
2. Databricks にてカタログ等を作成
nation_src テーブルにはデータがあり、 nation テーブルにはデータがない状態となっています。
%sql
CREATE CATALOG IF NOT EXISTS adf_test_01;
CREATE SCHEMA IF NOT EXISTS adf_test_01.shcema_01;
CREATE OR REPLACE TABLE adf_test_01.shcema_01.nation_src
AS
SELECT
*
FROM
samples.tpch.nation
;
CREATE OR REPLACE TABLE adf_test_01.shcema_01.nation
(
n_nationkey integer
,n_name string
,n_regionkey integer
,n_comment string
)
;
%sql
SELECT
*
FROM
adf_test_01.shcema_01.nation
3. Databricks のクラスターにてデフォルトのカタログを変更
spark.databricks.sql.initial.catalog.name adf_test_01
下記のコードを実行することで、デフォルトのカタログの確認が可能です。
%sql
SELECT
current_catalog()
4. ADF にてnation_src テーブルをソース、 nation テーブルをシンクに設定したコピーアクティビティを含むパイプライを作成して実行
5. Databricks にてシンク先のテーブルにデータがあることを確認
%sql
SELECT
*
FROM
adf_test_01.shcema_01.nation
6. Databricks のカタログを削除
%sql
DROP CATALOG IF EXISTS adf_test_01 CASCADE;