メインコンテンツまでスキップ

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

important

マウントは、従来のアクセス パターンです。 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の設定をオプションとして設定することを推奨しています。これにより、設定がクラスターやセッションではなくマウントに関連付けられます。

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

設定が不適切な場合、ワークスペース内のすべてのユーザーに提供されるアクセスが安全でなくなる可能性があるため、データマウントの設定や変更の前に、ワークスペースおよびクラウドの管理者に確認してください。

注記

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

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

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

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

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

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

DBFSマウントを操作する際は、バケット名にアンダースコアを含めることはできません。GCSバケットに書き込むには、バケットのGoogle CloudプロジェクトIDを指定する必要があります。

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

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

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

Python
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"}
)