プロバイダーをインポートし、Azure Databricksで共有データを読み取る

Azure Databricks受信者は、開いているプロバイダーから資格情報ファイルをインポートし、共有データ資産を読み取ることができます。 カタログ エクスプローラーで共有データのクエリを実行することも、Python ノートブックを使用することもできます。

Note

Databricks-to-Databricks OpenSharing を使用してデータが共有されている場合、データにアクセスするための資格情報ファイルは必要ありません。このページは適用されません。 代わりに、 Databricks-to-Databricks OpenSharing (受信者の場合) を使用して共有されるデータの読み取りを参照してください。

要求事項

チームのメンバーは、データ プロバイダーが共有する資格情報ファイルをダウンロードし、セキュリティで保護されたチャネルを使用してそのファイルまたはファイルの場所を共有する必要があります。 Open-to-Databricks モデルでのアクセス権の取得を参照してください。

Note

ストレージ バケットと資格情報の機能 (スコープ、有効期限、読み取り/書き込み) は、プロバイダーによって決定されます。 プロバイダーが Azure Databricks プロバイダーの場合、Secure Egress Gateway (SEG) ワークスペースにオープン共有をマウントすると、送信アクセス用にプロバイダーのバケットが自動的に許可リストに登録されます。 Databricks 以外のオープン プロバイダーの場合、バケットは自動的に許可リストに登録されません。 マウントする前にプロバイダーを確認します。

開いているプロバイダーが資格情報の自動販売機 (ディレクトリ ベースのアクセス) を使用してテーブルを共有する場合、これらのテーブルは、サポートされているスキーム ( s3s3as3nabfsswasbsgs、または r2) のいずれかを使用するクラウド ストレージによってサポートされていることを確認します。 サポートされていないスキーム (暗号化されていない wasb スキームなど) を使用してストレージによってバックアップされたテーブルは、資格情報の自動販売機で読み取ることはできません。

プロバイダーをインポートし、共有データに対してクエリを実行する

このセクションでは、プロバイダーをインポートする方法と、Catalog Explorer または Python ノートブックで共有データに対してクエリを実行する方法について説明します。

  • Azure Databricks ワークスペースが Unity カタログに対して有効になっている場合は、カタログ エクスプローラーでプロバイダーのインポート UI を使用します。 資格情報ファイルを保存または指定しなくても、次の操作を行うことができます。

    • ボタンをクリックして共有からカタログを作成します。
    • Unity カタログのアクセス制御を使用して、共有テーブルへのアクセスを許可します。
    • 標準の Unity カタログ構文を使用して共有データのクエリを実行します。
    • カタログを再作成せずに、既存のプロバイダー オブジェクトにローテーションされた資格情報を適用します。 公開されている受信者の資格情報を更新するを参照してください。
  • Azure Databricks ワークスペースで Unity カタログが有効になっていない場合は、代わりにPythonノートブックの手順に従ってください。

カタログ エクスプローラー

必要なアクセス許可: メタストア管理者、または Unity カタログメタストアの CREATE PROVIDER 権限を持つユーザー。 共有からカタログを作成するには、 CREATE CATALOG 特権が必要です。

  1. Azure Databricks ワークスペースで、Data icon.Catalog をクリックしてカタログ エクスプローラーを開きます。

  2. Catalog ペインの上部で、歯車アイコン をクリックし、OpenSharing を選択します。 または、右上隅の [ 共有] > [OpenSharing] をクリックします。

  3. [ 自分と共有 ] タブで、[ 共有のインストール] をクリックします。

  4. プロバイダー名を入力します。 名前にスペースを含めることはできません。

  5. プロバイダーが共有した資格情報ファイルをアップロードします。 多くのプロバイダーには、共有を受信できる独自の OpenSharing ネットワークがあります。 詳細については、「プロバイダー固有の構成」を参照してください。

  6. (省略可能)コメントを入力します。

    プロバイダーからプロバイダーの資格情報ファイルを直接インポートする

  7. [インポート] をクリックします。

  8. [ 共有 ] タブで、[共有] 行の [ カタログの作成 ] をクリックして、共有データからカタログを作成します。

    SQL または Databricks CLI を使用して共有からカタログを作成する方法については、「共有からカタログを作成する」を参照してください。

  9. カタログへのアクセス権を付与します。 共有データをチームで利用できるようにするにはどうすればよいですか?およびOpenSharing カタログ内のスキーマ、テーブル、ボリュームのアクセス許可を管理するを参照してください。

  10. Unity カタログに登録されているデータ オブジェクトと同様に、共有データ オブジェクトを読み取ります。

    詳細と例については、「共有テーブルまたはボリューム内のデータにアクセスする」を参照してください。

Python

ワークスペースが Unity カタログに対して有効になっていない場合は、Azure Databricks ワークスペースのノートブックを使用して共有データを読み取ります。 資格情報ファイルをAzure Databricksに格納し、それを使用してデータ プロバイダーに対する認証と共有データの読み取りを行います。

Note

次の手順では、Azure Databricks ワークスペースが Unity カタログに対して有効になっていないことを前提としています。 Unity カタログを使用している場合は、共有から読み取るときに資格情報ファイルをポイントする必要はありません。 Unity カタログに登録されている任意のテーブルから行うのと同じように、共有テーブルから読み取ることができます。 Databricks では、ここで説明する手順ではなく、カタログ エクスプローラーでプロバイダーのインポート UI を使用することをお勧めします。

まず、チームのユーザーが共有データにアクセスできるように、資格情報ファイルを Azure Databricks ワークスペース ファイルとして格納します。

  1. Azure Databricks ワークスペースに資格情報ファイルをインポートするには、「 ファイルのインポート」を参照してください。
  2. [ Kebab] メニュー アイコン をクリックして、他のユーザーにファイルへのアクセス許可を付与できます。ファイルの横にある [ 共有] (アクセス許可) をクリックします。 ファイルにアクセスできる必要がある Azure Databricks ID を入力します。 ファイルのアクセス許可の詳細については、「 ファイル ACL」を参照してください。

資格情報ファイルが格納されたので、共有テーブルを一覧表示して読み取るノートブックを作成します。

  1. Azure Databricks ワークスペースで、New > Notebook をクリックします。 Azure Databricks ノートブックの詳細については、「Databricks Notebooks」を参照してください。

  2. delta-sharing コネクタをインストールし、Python、pandas、または Apache Spark を使用して共有テーブルの一覧表示と読み取りを行います。 プロファイル パスとして、資格情報ファイルへのワークスペース パス ( /Workspace/Users/user.name@email.com/config.share など) を使用します。 コード例については、「 Pandas: 共有データの読み取り」「Apache Spark: 共有データの読み取り」を参照してください。

  3. Pythonコマンドと Apache Spark コマンドに加えて、SQL を使用して共有データのクエリを実行できます。 共有テーブルからワークスペースにローカル テーブルを作成し、ローカル テーブルに対してクエリを実行します。 共有データは、ローカルテーブルに保存またはキャッシュされません。 ローカルテーブルに対してクエリを実行するたびに、共有データの現在の状態が表示されます。

    変数を次のように置き換えます。

    • <local-table-name>: ローカルテーブルの名前。
    • <profile-path>: 資格情報ファイルの場所。
    • <share-name>: テーブルの share= の値。
    • <schema-name>: テーブルの schema= の値。
    • <table-name>: テーブルの name= の値。
    %sql
    DROP TABLE IF EXISTS <local-table-name>;
    
    CREATE TABLE <local-table-name> USING deltaSharing LOCATION "<profile-path>#<share-name>.<schema-name>.<table-name>";
    
    SELECT * FROM <local-table-name> LIMIT 10;
    
  4. コマンドを実行すると、共有データに直接クエリが実行されます。 テストとして、テーブルに対してクエリが実行され、最初の 10 件の結果が返されます。

  5. 出力が空であるか、予想されるデータが含まれていない場合は、データ プロバイダーに問い合わせてください。

OpenSharing Python コネクタの制限が適用されます。 OpenSharing Python コネクタの制限事項を参照してください。

Limitations

Open-to-Databricks 共有は、 OpenSharing プロトコルに基づいています。 開いているプロバイダーをAzure Databricksにインポートする場合、次のサポートが適用されます。

  • Delta Sharing プロトコルをサポートする Delta テーブルのみ。 Iceberg のみのテーブルはサポートされていません。
  • 署名済み URL と クラウド トークン (ディレクトリベース) アクセス の両方がサポートされています。 Azure Databricksは、プロバイダーがクラウド トークンを使用できるようにする場合に、クラウド トークン アクセスを優先します。
  • サポートされているクラウド トークンストレージスキームは、 s3s3as3nabfsswasbsgsr2のみです。

外部ソースから Iceberg、CSV、Parquet、JSON などの差分以外のデータを読み取る場合は、代わりに Lakehouse Federation を使用します。 外部データベースとカタログへの接続を参照してください。