Databricks どこにデータを書き込みますか?
この記事では、Databricks が一般的な操作と構成を使用してデータを書き込む場所について詳しく説明します。 Databricks には、多くのテクノロジにまたがり、共有責任モデルでクラウド リソースと対話する一連のツールが用意されているため、データの格納に使用される既定の場所は、実行環境、構成、ライブラリによって異なります。
この記事の情報は、さまざまな操作のデフォルト パスと、構成によってこれらのデフォルトがどのように変更されるかを理解するのに役立つことを目的としています。 データへのアクセスの設定と制御に関するガイダンスを探しているデータスチュワードと管理者は、Unity Catalogを使用したデータガバナンスを参照してください。
オブジェクトストレージおよびその他のデータソースの構成については、「 データソースへの接続」を参照してください。
オブジェクトストレージとは
クラウド コンピューティングでは、オブジェクト ストレージまたは BLOB ストレージは、データをオブジェクトとして保持するストレージ コンテナーを指し、各オブジェクトはデータ、メタデータ、およびグローバルに一意のリソース識別子 (URI) で構成されます。 オブジェクト・ストレージでのデータ操作は、多くの場合、REST APIインタフェースを介した作成、読取り、更新および削除(CRUD)に制限されます。 一部のオブジェクト・ストレージ・オファリングには、バージョン管理やライフサイクル管理などの機能が含まれています。 オブジェクト・ストレージには、次の利点があります。
高可用性、耐久性、信頼性。
他のほとんどのストレージオプションと比較してストレージのコストが低くなります。
無限にスケーラブル(クラウドの特定のリージョンで使用可能なストレージの合計量によって制限されます)。
ほとんどのクラウドベースのデータレイクは、クラウドオブジェクトストレージのオープンソースデータ形式の上に構築されています。
Databricks はオブジェクト ストレージをどのように使用しますか?
オブジェクト ストレージは、Databricks がほとんどの操作に使用するストレージの主な形式です。 Databricks Filesystem (DBFS) を使用すると、Databricks ユーザーは、他のファイル システムの場合と同様に、オブジェクト ストレージ内のファイルを操作できます。外部データ システムに対してテーブルを特に構成しない限り、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 を使用したクラウド オブジェクト ストレージへの接続」を参照してください。
Databricks SQL はデータ バッキング テーブルをどこに格納しますか?
Unity Catalog で構成された Databricks SQL を使用して CREATE TABLE
ステートメントを実行すると、既定の動作では、Unity Catalog で構成されたマネージド ストレージの場所にデータ ファイルが格納されます。 「 Unity Catalog はデータ ファイルを格納する場所」を参照してください。
従来の hive_metastore
カタログは、異なるルールに従います。 Unity Catalog とレガシー Hive metastoreの操作を参照してください。
Delta Live Tables データファイルはどこに保存されますか?
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ルートを使用することはお勧めしません。 「 Databricks ファイル システム (DBFS) とは 」および 「DBFSルートの使用に関する推奨事項」を参照してください。
pandas は Databricks のどこにデータファイルを書き込みますか?
Databricks Runtime 14.0 以降では、すべてのローカル Python の読み取りおよび書き込み操作の既定の現在の作業ディレクトリ (CWD) は、ノートブックを含むディレクトリです。データファイルを保存するときにファイル名のみを指定すると、pandas は現在実行中のノートブックと並行してそのデータファイルをワークスペースファイルとして保存します。
すべての Databricks Runtime バージョンがワークスペース ファイルをサポートしているわけではありません。また、一部の Databricks Runtime バージョンは、ノートブックを使用するか Git フォルダーを使用するかによって動作が異なります。 「デフォルトの現在の作業ディレクトリとは何ですか?」を参照してください。 。
Databricksのどこに一時ファイルを書き込む必要がありますか?
クラスターのシャットダウン後に保持したくない一時ファイルを書き込む必要がある場合、現在の作業ディレクトリ (CWD) がワークスペース ファイル システム内にある場合、一時ファイルを$TEMPDIR
に書き込む方が、現在の作業ディレクトリ (CWD) に書き込むよりもパフォーマンスが向上します。 コードがリポジトリで実行される場合は、ブランチ サイズ制限を超えることも回避できます。 詳細については、 「ファイルとリポジトリのサイズ制限」を参照してください。
書き込まれるデータの量が非常に多く、ストレージをオートスケールする必要がある場合は、 /local_disk0
に書き込みます。