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

DBIOを使用したクラウドストレージへのトランザクション書き込み

important

このドキュメントは廃止されており、更新されない可能性があります。 このコンテンツに記載されている製品、サービス、またはテクノロジはサポートされなくなりました。 「Databricks の ACID 保証とは」を参照してください。

Databricks DBIO パッケージは、Apache Spark ジョブのクラウド ストレージへのトランザクション書き込みを提供します。 これにより、Spark をクラウドネイティブ設定で使用するときに発生するパフォーマンスと正確性の多くの問題が解決されます (たとえば、ストレージ サービスに直接書き込む場合)。

important

コミット・プロトコルは、 *で終わるパスを使用してデータにアクセスする場合、尊重されません。 たとえば、 dbfs:/my/path を読み取るとコミットされた変更のみが返されますが、 dbfs:/my/path/* を読み取ると、内容がコミットされたかどうかに関係なく、ディレクトリ内のすべてのデータ ファイルの内容が返されます。 これは正常な動作です。

DBIO トランザクション コミットでは、 _started_<id> で始まるメタデータ ファイルと _committed_<id> は、Spark ジョブによって作成されたデータ ファイルに付属します。 通常、これらのファイルを直接変更しないでください。 むしろ、 VACUUM コマンドを使用してそれらをクリーンアップする必要があります。

コミットされていないファイルをクリーンアップする

Spark ジョブから残ったコミットされていないファイルをクリーンアップするには、 VACUUM コマンドを使用してファイルを削除します。 通常、VACUUMはジョブの完了後に自動的に行われます Spark 、ジョブが中止された場合は手動で実行することもできます。

たとえば、 VACUUM ... RETAIN 1 HOUR は 1 時間以上経過したコミットされていないファイルを削除します。

important
  • 地平線が1時間未満の vacuum は避けてください。 データの不整合が発生する可能性があります。

vacuumも参照してください。

SQL
-- recursively vacuum an output path
VACUUM '/path/to/output/directory' [RETAIN <N> HOURS]

-- vacuum all partitions of a catalog table
VACUUM tableName [RETAIN <N> HOURS]