Databricks はどこにデータを書き込むのですか?
この記事では、Databricks が日常の操作と構成を使用してデータを書き込む場所について詳しく説明します。 Databricks には、多くのテクノロジーにまたがり、責任共有モデルでクラウドリソースとやり取りする一連のツールがあるため、データの保存に使用されるデフォルトの場所は、実行環境、設定、ライブラリによって異なります。
この記事の情報は、さまざまな操作のデフォルト パスと、これらのデフォルトを変更する構成を理解するのに役立つことを目的としています。 データスチュワードおよびデータへのアクセスの構成と制御に関するガイダンスを探している管理者は、 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 によって管理されるオブジェクトに書き込まれたデータまたはアップロードされたデータは、次のいずれかの場所に格納されます。
- メタストア、カタログ、またはスキーマに関連付けられた管理されたストレージの場所。 マネージドテーブルおよびマネージドボリュームに書き込まれたデータまたはアップロードされたデータは、マネージドストレージを使用します。 Unity Catalog で管理されたストレージの場所を指定するを参照してください。
- ストレージの認証情報で設定された外部ロケーション。 外部テーブルおよび外部ボリュームに書き込まれたデータまたはアップロードされたデータは、外部ストレージを使用します。 Unity Catalog を使用してクラウド オブジェクト ストレージとサービスに接続するを参照してください。
Databricks SQL はデータ バッキング テーブルをどこに保存しますか?
CREATE TABLE
Databricks SQLで設定された でUnity Catalog ステートメントを実行すると、デフォルトの動作は、Unity Catalog で設定された管理ストレージロケーションにデータファイルを保存することです。Unity Catalog がデータ ファイルを保存する場所を参照してください。
従来の hive_metastore
カタログは、異なるルールに従います。 Unity Catalog と従来のHive metastoreの操作を参照してください。
DLTはデータファイルをどこに保存しますか?
Databricks では、DLT パイプラインを作成するときに Unity Catalog を使用することをお勧めします。 データは、ターゲット スキーマに関連付けられた管理ストレージの場所にあるディレクトリに格納されます。
オプションで、 Hive metastoreを使用して DLT パイプラインを構成できます。 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
に書き込むデータ量が多く、ストレージをオートスケールにしたい場合は、書き込みを行います。