クラウド ストレージを Databricks に接続するための外部ロケーションを作成する

この記事では、クラウド ストレージを Databricks に接続するためにUnity Catalogで外部ロケーションを構成する方法について説明します。

外部ロケーション Unity Catalog ストレージの資格情報をクラウド オブジェクト ストレージ コンテナーに関連付けます。 外部ロケーションは、カタログおよびスキーマの管理対象ストレージ・ロケーションの定義、および外部表および外部ボリュームのロケーションの定義に使用されます。

Google Cloud Storage (GCS) または Cloudflare R2 バケット内のストレージを参照する外部ロケーションを作成できます。

外部ロケーションは、カタログエクスプローラー、Databricks CLI、ノートブックの SQL コマンド、または Databricks SQL クエリーを使用して作成できます。

注:

ボリュームを定義すると、ボリューム パスの下のデータへのクラウド URI アクセスは、ボリュームの権限によって管理されます。

始める前に

前提条件:

  • Databricks で外部ロケーション オブジェクトを作成する前に、外部ロケーションとして使用する Google Cloud Storage (GCS) または Cloudflare R2 バケットを作成する必要があります。

権限の要件:

  • メタストアと外部ロケーションで参照されるストレージ認証情報の両方に対するCREATE EXTERNAL LOCATION権限が必要です。 メタストア管理者は、デフォルトでメタストアにCREATE EXTERNAL LOCATIONを持ちます。

「カタログエクスプローラ」(Catalog Explorer) を使用した外部ロケーションの作成

カタログ エクスプローラーを使用して、外部ロケーションを手動で作成できます。

アクセス許可と前提条件: 「開始する前に」を参照してください。

外部ロケーションを作成するには:

  1. メタストアに接続されているワークスペースにログインします。

  2. サイドバーで [カタログ アイコン カタログ ] をクリックします 。

  3. [ + 追加 ] ボタンをクリックし、[ 外部ロケーションの追加] を選択します。

  4. 外部ロケーション名を入力します。

  5. 必要に応じて、既存のマウント ポイントからバケット パスをコピーします (GCS バケットのみ)。

  6. 既存のマウント ポイントからコピーしていない場合は、 URLフィールドを使用して、外部ロケーションとして使用するバケット パスを入力します。

    たとえば、 gs://mybucket/<path>r2://mybucket@my-account-id.r2.cloudflarestorage.com/<path>などです。

  7. 外部ロケーションへのアクセスを許可するストレージ資格情報を選択します。

  8. (オプション)ユーザーに外部ロケーションへの読み取り専用アクセス権を付与する場合は、[ 詳細オプション ] をクリックして [ 読み取り専用] を選択します。 詳しくは、「 外部ロケーションを読み取り専用にする」をご覧ください。

  9. 作成」をクリックします。

  10. 外部ロケーションの使用権限を付与します。

    すべてのユーザーが外部ロケーションを使用するには、アクセス許可を付与する必要があります。

    • 外部ロケーションを使用して、メタストア、カタログ、またはスキーマに管理されたストレージの場所を追加するには、 CREATE MANAGED LOCATION 特権を付与します。

    • 外部テーブルまたはボリュームを作成するには、 CREATE EXTERNAL TABLE または CREATE EXTERNAL VOLUMEを付与します。

    「カタログエクスプローラ」(Catalog Explorer) を使用してアクセス権を付与するには

    1. 外部ロケーション名をクリックして、詳細ウィンドウを開きます。

    2. [ アクセス許可 ] タブで、[ 許可] をクリックします。

    3. <external location>時に付与」ダイアログで、「プリンシパル」フィールドでユーザー、グループ、またはサービスプリンシパルを選択し、付与する権限を選択します。

    4. [付与] をクリックします。

SQLを使用した外部ロケーションの作成

SQL を使用して外部ロケーションを作成するには、ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。 プレースホルダー値を置き換えます。

アクセス許可と前提条件: 「開始する前に」を参照してください。

  • <location-name>: 外部ロケーションの名前。 location_name にハイフン(-)などの特殊文字が含まれている場合は、バッククォート( ` ` )で囲む必要があります。「 名前」を参照してください。

  • <bucket-path>: この外部ロケーションがアクセスを許可するクラウド テナント内のパス。 たとえば、 gs://mybucketr2://mybucket@my-account-id.r2.cloudflarestorage.comなどです。

  • <storage-credential-name>: バケットからの読み取りとバケットへの書き込みを承認するストレージ認証情報の名前。 ストレージ資格証明名にハイフン(-)などの特殊文字が含まれている場合は、バッククォート( ` ` )で囲む必要があります。

CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

次のステップ