次の方法で共有


Databricks Unity Catalog を OneLake と統合する

Note

この記事では、ショートカットを使用して Unity カタログ テーブルを OneLake に同期する手動の方法について説明します。 この方法の代わりに、 Azure Databricks Unity カタログのミラーリングを 使用して、Databricks テーブルを自動同期と最小限のセットアップで OneLake に取り込むことをお勧めします。

このシナリオでは、ショートカットを使用して Unity Catalog の外部 Delta テーブルを OneLake に統合する方法を示します。 このチュートリアルを完了すると、Unity カタログの外部 Delta テーブルを Microsoft Fabric Lakehouse に自動的に同期できます。

前提条件

接続する前に、次の内容を確認してください。

クラウド ストレージ接続を設定する

まず、Unity カタログ テーブルで使用する Azure Data Lake Storage Gen2 (ADLS Gen2) 内のストレージの場所を確認します。 OneLake ショートカットでは、このクラウド ストレージ接続が使用されます。 適切な Unity カタログストレージの場所へのクラウド接続を作成するには:

  1. Unity Catalog テーブルが使用するクラウド ストレージ接続を作成します。 ADLS Gen2 接続を設定する方法を参照してください。

  2. 接続を作成した後、 設定>接続とゲートウェイの管理>Connections>Settings を選択して接続 ID を取得します。

ADLS Gen2 接続 ID を示すスクリーンショット。

Note

ユーザーに対して ADLS Gen2 の外部ロケーション ストレージへの直接ストレージ レベル アクセス権を許可すると、Unity Catalog が付与するアクセス許可や管理する監査には適用されません。 直接アクセスは、監査、系列、アクセス制御やアクセス許可を含む Unity Catalog のその他のセキュリティ/監視機能をバイパスします。 お客様は、ADLS Gen2 を介して直接ストレージ アクセスを管理し、Fabric 経由でユーザーに適切なアクセス許可が付与されていることを確認する責任があります。 Databricks マネージド テーブルを格納するバケットに対し、直接ストレージ レベルの書き込みアクセス権限を許可するすべてのシナリオを回避してください。 元々 Unity Catalog が管理していたストレージを直接介してオブジェクトを変更、削除、進化させると、データが破損する可能性があります。

ノートブックを実行する

クラウド接続 ID を取得したら、Fabric Lakehouse に Unity カタログ テーブルを追加します。

Unity Catalog から Fabric へのショートカット フローを示すスクリーンショット。

  1. Fabric ワークスペースに同期ノートブックをインポートします。 このノートブック は、メタストアの特定カタログとスキーマからすべての Unity Catalog テーブル メタデータをエクスポートします。

  2. Unity Catalog テーブルを統合するには、ノートブックの最初のセルにあるパラメーターを構成します。 PAT トークンで認証された Databricks API は、Unity Catalog テーブルのエクスポートに利用されます。 次のスニペットは、ソース (Unity Catalog) とエクスポート先 (OneLake) のパラメータを構成するために使用します。 これらは実際の値に置き換えてください。

    # Databricks workspace
    dbx_workspace = "<databricks_workspace_url>"
    dbx_token = "<pat_token>"
    # Unity Catalog
    dbx_uc_catalog = "catalog1"
    dbx_uc_schemas = '["schema1", "schema2"]'
    
    # Fabric
    fab_workspace_id = "<workspace_id>"
    fab_lakehouse_id = "<lakehouse_id>"
    fab_shortcut_connection_id = "<connection_id>"
    # If True, UC table renames and deletes will be considered
    fab_consider_dbx_uc_table_changes = True
    
  3. ノートブックのすべてのセルを実行し、ショートカットを使用して Unity Catalog Delta テーブルを OneLake に同期を開始します。 ノートブックが完了すると、Lakehouse、SQL 分析エンドポイント、セマンティック モデルで Unity カタログ デルタ テーブルへのショートカットを使用できます。

ノートブックをスケジュールする

手動で再同期または再実行せずに Unity カタログ デルタ テーブルを OneLake に統合するためにノートブックを定期的に実行する場合は、 ノートブックをスケジュール するか、Fabric Data Factory 内のパイプラインで ノートブック アクティビティ を使用できます。

後者のシナリオでは、パイプラインからパラメーターを渡す場合は、ノートブックの最初のセルを トグル パラメーター セル として指定し、パイプラインで適切なパラメーターを指定します。

ノートブックアクティビティのパラメーターを示すスクリーンショット。

その他の考慮事項

  • 運用シナリオでは、認証に Databricks OAuth を使用し、Azure Key Vault を使用してシークレットを管理します。 たとえば、 MSSparkUtils 資格情報ユーティリティを使用して Key Vault シークレットにアクセスできます。
  • ノートブックは Unity Catalog の外部 Delta テーブルと動作します。 複数の ADLS Gen2 など、Unity カタログ テーブルに複数のクラウド ストレージの場所を使用している場合は、クラウド接続ごとにノートブックを個別に実行します。
  • Unity カタログのマネージド デルタ テーブル、ビュー、マテリアライズド ビュー、ストリーミング テーブル、および非デルタ テーブルはサポートされていません。
  • 列の追加や削除などの Unity カタログ テーブル スキーマの変更により、ショートカットが自動的に更新されます。 ただし、Unity カタログ テーブルの名前変更や削除などの一部の更新では、ノートブックの再同期または再実行が必要です。 この動作は、 fab_consider_dbx_uc_table_changes パラメーターによって制御されます。
  • シナリオを記述する場合、異なるコンピューティング エンジン間で同じストレージ レイヤーを使用すると、意図しない結果が生じる可能性があります。 さまざまな Apache Spark コンピューティング エンジンとランタイム バージョンを使用する場合の影響について説明します。