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

Databricks はどこにデータを書き込むのですか?

この記事では、Databricks が日常の操作や構成中にデータを書き込む場所について詳しく説明します。Databricks には、多くのテクノロジーにまたがり、責任共有モデルでクラウドリソースとやり取りする一連のツールがあるため、データの保存に使用されるデフォルトの場所は、実行環境、設定、ライブラリによって異なります。

この記事の**情報**は、さまざまな操作の**default** パスと、構成によってこれらの**default**がどのように変更されるかを理解するのに役立つことを目的としています。データへのアクセスの設定と制御に関するガイダンスについては、Unity Catalogによるデータガバナンスを参照してください。

オブジェクトストレージとその他のデータソースの設定については、 データソースと外部サービスへの接続を参照してください。

オブジェクトストレージとは?​

クラウドコンピューティングでは、オブジェクトストレージまたはブロブストレージは、データをオブジェクトとして保持するストレージコンテナを指し、各オブジェクトはデータ、メタデータ、およびグローバル一意リソース識別子(URI)で構成されます。 オブジェクト・ストレージ・データ操作は、多くの場合、REST APIインタフェースを介した作成、読取り、更新および削除(CRUD)に限定されます。 一部のオブジェクトストレージ製品には、バージョン管理やライフサイクル管理などの機能が含まれています。 オブジェクトストレージには、次の利点があります。

  • 高可用性、耐久性、信頼性。
  • 他のほとんどのストレージオプションと比較して、ストレージコストが削減されます。
  • 無限にスケーラブルです(特定のクラウドリージョンで使用可能なストレージの合計量によって制限されます)。

ほとんどのクラウドベースのデータレイクは、クラウドオブジェクトストレージのオープンソースデータ形式の上に構築されています。

Databricks はオブジェクトストレージをどのように使用しますか?​

オブジェクトストレージは、Databricksがほとんどの操作に使用するストレージの主な形式です。 クラウド・オブジェクト・ストレージへのアクセスは、 Unity Catalog ストレージ資格情報と外部ロケーションを使用して構成します。 これらの場所は、テーブルとボリュームをバッキングするデータファイルを格納するために使用されます。 「Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」を参照してください。

外部データ システムに対してテーブルを特に構成しない限り、Databricks で作成されたすべてのテーブルは、クラウドオブジェクトストレージにデータを格納します。

クラウドオブジェクトストレージに保存された Delta Lake ファイルは、Databricks レイクハウスのデータ基盤を提供します。

ブロックストレージとは?​

クラウドコンピューティングでは、ブロックストレージまたはディスクストレージは、従来のハードディスクドライブ(HDD)またはソリッドステートドライブ(SSD)(「ハードドライブ」とも呼ばれる)に対応するストレージボリュームを指します。 クラウドコンピューティング環境にブロックストレージをデプロイする場合、通常は 1 つ以上の物理ドライブの論理パーティションがデプロイされます。 実装は、製品オファリングとクラウド ベンダーによって若干異なりますが、通常、実装間で次の特性が見られます。

  • すべての仮想マシン (VM) には、接続されたブロック ストレージ ボリュームが必要です。
  • ブロック・ストレージ・ボリュームにインストールされたファイルおよびプログラムは、ブロック・ストレージ・ボリュームが存続する限り存続します。
  • ブロック・ストレージ・ボリュームは、多くの場合、一時データ・ストレージに使用されます。
  • VMにアタッチされたブロックストレージボリュームは、通常、VMとともに削除されます。

Databricks はブロックストレージをどのように使用しますか?​

コンピュート リソースを有効にすると、 Databricks によって VM が構成およびデプロイされ、ブロック ストレージ ボリュームがアタッチされます。 このブロック ストレージは、コンピュート リソースの有効期間中、一時的なデータ ファイルを格納するために使用されます。 これらのファイルには、オペレーティング システム、インストールされているライブラリ、 およびディスク キャッシュで使用されるデータが含まれます。 Apache Spark は、効率的な並列化とデータの読み込みのためにバックグラウンドでブロック ストレージを使用しますが、Databricks で実行されるほとんどのコードは、ブロック ストレージにデータを直接保存または読み込みません。

ドライバーノードにアタッチされたブロックストレージを使用する Python や Bash コマンドなど、任意のコードを実行できます。 ドライバー ノードにアタッチされたエフェメラル ストレージ内のファイルの操作を参照してください。

Unity Catalog はデータ ファイルをどこに保存しますか?​

Unity Catalog は、クラウド ストレージとリレーショナル オブジェクト間の関係を構成するために管理者に依存しています。 データが存在する正確な場所は、管理者が関係をどのように構成したかによって異なります。

Unity Catalog によって管理されるオブジェクトに書き込まれたデータまたはアップロードされたデータは、次のいずれかの場所に格納されます。

Databricks SQL はデータ バッキング テーブルをどこに保存しますか?​

CREATE TABLEDatabricks SQLで設定された でUnity Catalog ステートメントを実行すると、デフォルトの動作は、Unity Catalog で設定された管理ストレージロケーションにデータファイルを保存することです。Unity Catalog がデータ ファイルを保存する場所を参照してください。

従来の hive_metastore カタログは、異なるルールに従います。レガシーHive metastoreとUnity Catalogの操作を参照してください。

LakeFlow Pipelines はデータファイルをどこに保存しますか?​

Databricksは、Lakeflow pipelinesを作成するときにUnity Catalogを使用することをお勧めします。データは、ターゲットスキーマに関連付けられた管理対象ストレージの場所のディレクトリに保存されます。

オプションで、Hive metastore を使用して LakeFlow Pipelines を構成できます。Hive metastore で構成されている場合、DBFS またはクラウドオブジェクトストレージに保存場所を指定できます。場所を指定しない場合、DBFS ルート上の場所がパイプラインに割り当てられます。

Apache Spark はどこにデータ ファイルを書き込むのですか?​

Databricks では、データの読み取りと書き込みに Unity Catalog でオブジェクト名を使用することをお勧めします。 次のパターンを使用して、 Unity Catalog ボリュームにファイルを書き込むこともできます。 /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>。 Unity Catalogで管理されるオブジェクトにデータをアップロード、作成、更新、または挿入するための十分な特権が必要です。

オプションで、ユニバーサル・リソース・インジケータ (URI) を使用して、データ・ファイルへのパスを指定できます。 URI は、クラウドプロバイダーによって異なります。 また、現在のコンピュート リソースに書き込みを行うには、書き込み権限が設定されている必要があります。

Databricks は、この Databricks Filesystem を使用して、読み取りおよび書き込みコマンド Apache Spark クラウドオブジェクトストレージにマッピングし直します。 各 Databricks ワークスペースには、ワークスペースに割り当てられた DBFSルート ストレージの場所が構成されています クラウド上で アカウント。これにより、すべてのユーザーがデータの読み取りと書き込みにアクセスできます。 Databricks では、 DBFSルートを使用して本番運用データを格納することはお勧めしません。 DBFSとはおよびDBFSルートの使用に関する推奨事項を参照してください。

PandasDatabricksどこにデータファイルを書き込みますか?​

Databricks Runtime 14.0 以降では、すべてのローカルPythonの読み取りおよび書き込み操作のデフォルト カレント ワーキング ディレクトリ (CWD) は、ノートブックを含むディレクトリです。データ ファイルを保存するときにファイル名のみを指定した場合、 Pandas はそのデータ ファイルを現在実行中のノートブックと並行してワークスペース ファイルとして保存します。

すべての Databricks Runtime バージョンがワークスペース ファイルをサポートしているわけではなく、一部の Databricks Runtime バージョンでは、ノートブックと Git フォルダーのどちらを使用するかによって動作が異なります。 デフォルトの現在の作業ディレクトリとはを参照してください。

Databricks のどこに一時ファイルを書き込むべきですか?​

クラスタのシャットダウン後に保持しない一時ファイルを書き込む必要がある場合は、一時ファイルを $TEMPDIR に書き込む方が、CWD がワークスペース ファイル システム内にある場合は現在の作業ディレクトリ (CWD) に書き込むよりもパフォーマンスが向上します。 また、コードがリポジトリで実行される場合は、ブランチ サイズの制限を超えないようにすることもできます。 詳細については、 ファイルとリポジトリの制限を参照してください。

書き込むデータ量が多く、ストレージをオートスケールにしたい場合は、/local_disk0に書き込みを行います。

警告

/local_disk0 へは、専用アクセスモード (シングルユーザー) または分離なしアクセスモードのコンピュートでのみ書き込み可能です。標準アクセスモード (旧共有) のコンピュートおよびServerlessコンピュートでは、/local_disk0 への書き込みが権限エラーで失敗します。

あらゆるコンピュートタイプで大量の一時データを書き込むには、DatabricksではUnity Catalogボリュームまたはクラウドオブジェクトストレージに書き込むことをお勧めします。他のユーザーが読み取れない一時ファイルを書き込むには、ホームディレクトリ($HOME)に書き込んでください。Databricksでは、機密の一時ファイルを/tmpに書き込むことを推奨していません。これは、コンピュート上のすべてのユーザーがそれらを読み取ることができるためです。