Databricks へのクラウドオブジェクトストレージのマウント

重要

マウントは、従来のアクセスパターンです。 Databricks では、すべてのデータ アクセスの管理に Unity Catalog の使用を推奨しています。 「Unity Catalog を使用してクラウドオブジェクトストレージに接続する」を参照してください。

Databricks を使用すると、ユーザーはクラウドオブジェクトストレージを Databricks ファイル システム (DBFS) にマウントして、クラウドの概念に慣れていないユーザーのデータ アクセス パターンを簡素化できます。 マウントされたデータは Unity Catalog では機能しないため、Databricks ではマウントの使用から移行し、代わりに Unity Catalog を使用してデータガバナンスを管理することをお勧めします。

Databricks はクラウドオブジェクトストレージをどのようにマウントしますか?

Databricks マウントは、ワークスペースとクラウドオブジェクトストレージの間にリンクを作成し、Databricks ファイル システムに関連する使い慣れたファイル パスを使用してクラウドオブジェクトストレージと対話できるようにします。 マウントは、次の情報を格納する /mnt ディレクトリの下にローカルエイリアスを作成することによって機能します。

  • クラウドオブジェクトストレージの場所。

  • ストレージ アカウントまたはコンテナーに接続するためのドライバーの仕様。

  • データへのアクセスに必要なセキュリティ資格情報。

ストレージをマウントするための構文は何ですか?

source は、オブジェクト・ストレージのURIを指定します(オプションでセキュリティ資格証明をエンコードできます)。mount_point は、 /mnt ディレクトリ内のローカル パスを指定します。一部のオブジェクト・ストレージ・ソースでは、オプションの encryption_type 引数がサポートされています。 一部のアクセスパターンでは、追加のコンフィギュレーション仕様をディクショナリとして extra_configsに渡すことができます。

Databricks では、 extra_configsを使用して、マウント固有の Spark と Hadoop の構成をオプションとして設定することをお勧めします。 これにより、構成がクラスターやセッションではなくマウントに結び付けられます。

dbutils.fs.mount(
  source: str,
  mount_point: str,
  encryption_type: Optional[str] = "",
  extra_configs: Optional[dict[str:str]] = None
)

不適切な構成は、ワークスペース内のすべてのユーザーにセキュリティで保護されていないアクセスを提供する可能性があるため、データマウントを構成または変更する前に、ワークスペース管理者とクラウド管理者に確認してください。

この記事で説明されているアプローチに加えて、 Databricks Terraform プロバイダーdatabricks_mount を使用してバケットのマウントを自動化できます。

マウントポイントのアンマウント

マウントポイントをアンマウントするには、次のコマンドを使用します。

dbutils.fs.unmount("/mnt/<mount-name>")

警告

エラーを回避するには、他のジョブがマウント・ポイントの読み取りまたは書き込みを行っている間は、マウント・ポイントを変更しないでください。 マウントを変更した後は、必ず他のすべての稼働中のクラスターで dbutils.fs.refreshMounts() を実行して、マウントの更新を伝達します。 refreshMounts コマンド (dbutils.fs.refreshMounts)を参照してください。

DBFSを介したGCSバケットへのアクセス

DBFSマウントを使用するには、バケット名にアンダースコアを含めることはできません。 GCS バケットに書き込むには、バケットの Google クラウド projectId を取得する必要があります。

クラスタのセキュリティを構成するときは、 サービスアカウントの 電子メールアドレスを使用する必要があります。

バケットを DBFSにマウントできます。 マウントは GCS の場所へのポインターであるため、データはローカルで同期されることはありません。

次の例は、GCS バケットをマウントするための基本的な構文を示しています。

bucket_name = "my-gcs-bucket"
mount_name = "my-mount"
dbutils.fs.mount(
  f"gs://{bucket_name}",
  f"/mnt/databricks/{mount_name}",
  extra_configs = {"fs.gs.project.id": "my-project-id"}
)
val bucket_name = "my-gcs-bucket"
val mount_name = "my-mount"
dbutils.fs.mount(
  s"gs://${bucket_name}",
  s"/mnt/databricks/${mount_name}",
  extraConfigs=Map("fs.gs.project.id" -> "my-project-id")
)