Databricks どこにデータを書き込みますか?
この記事では、Databricks が日常的な操作と構成でデータを書き込む場所について詳しく説明します。 Databricks には、多くのテクノロジにまたがり、共有責任モデルでクラウド リソースと対話するツール スイートがあるため、データの保存に使用されるデフォルトの場所は、実行環境、構成、ライブラリによって異なります。
この記事の情報は、さまざまな操作のデフォルト パスと、構成によってこれらのデフォルトがどのように変更されるかを理解するのに役立つことを目的としています。 データへのアクセスの設定と制御に関するガイダンスを探しているデータスチュワードと管理者は、Unity Catalogを使用したデータガバナンスを参照してください。
オブジェクト ストレージおよびその他のデータ ソースの構成については、 「データ ソースへの接続」を参照してください。
オブジェクトストレージとは
クラウド コンピューティングでは、オブジェクト ストレージまたは BLOB ストレージは、データをオブジェクトとして保持するストレージ コンテナーを指します。各オブジェクトは、データ、メタデータ、およびグローバルに一意のリソース識別子 (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 はデータ バッキング テーブルをどこに格納しますか?
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ルートを使用することはお勧めしません。 DBFSとは何か?」およびDBFSルートの使用に関する推奨事項」を参照してください。
pandas は Databricks のどこにデータファイルを書き込みますか?
Databricks Runtime 14.0 以降では、すべてのローカル Python の読み取りおよび書き込み操作の既定の現在の作業ディレクトリ (CWD) は、ノートブックを含むディレクトリです。データファイルを保存するときにファイル名のみを指定すると、pandas は現在実行中のノートブックと並行してそのデータファイルをワークスペースファイルとして保存します。
すべての Databricks Runtime バージョンがワークスペース ファイルをサポートしているわけではありません。また、一部の Databricks Runtime バージョンは、ノートブックを使用するか Git フォルダーを使用するかによって動作が異なります。 「デフォルトの現在の作業ディレクトリとは何ですか?」を参照してください。 。
Databricksのどこに一時ファイルを書き込む必要がありますか?
クラスターのシャットダウン後に保持しない一時ファイルを書き込む必要がある場合は、一時ファイルを $TEMPDIR
に書き込む方が、CWD がワークスペース・ファイルシステム内にある場合は現行作業ディレクトリー (CWD) に書き込むよりもパフォーマンスが高くなります。 また、コードがリポジトリで実行される場合は、ブランチ サイズの制限を超えないようにすることもできます。 詳細については、「 ファイルとリポジトリの制限」を参照してください。
書き込むデータの量が多く、ストレージをオートスケールにしたい場合は、 /local_disk0
に書き込みます。