Dbio を使用したクラウドストレージへのトランザクション書き込み Transactional writes to cloud storage with DBIO

Databricks DBIO パッケージは、Apache Spark ジョブのクラウドストレージへのトランザクション書き込みを提供します。The Databricks DBIO package provides transactional writes to cloud storage for Apache Spark jobs. これにより、Spark がクラウドネイティブの設定 (ストレージサービスへの直接書き込みなど) で使用されている場合に発生するパフォーマンスと正確性に関する多くの問題が解決されます。This solves a number of performance and correctness issues that occur when Spark is used in a cloud-native setting (for example, writing directly to storage services).

DBIO トランザクションコミットでは、で始まるメタデータファイル _started_<id> と、 _committed_<id> Spark ジョブによって作成されたデータファイルが付随します。With DBIO transactional commit, metadata files starting with _started_<id> and _committed_<id> accompany data files created by Spark jobs. 一般に、これらのファイルを直接変更することはできません。Generally you shouldn’t alter these files directly. 代わりに、コマンドを使用してクリーンアップする必要があり VACUUM ます。Rather, you should use the VACUUM command to clean them up.

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

Spark ジョブから残されたコミットされていないファイルをクリーンアップするには、コマンドを使用して VACUUM 削除します。To clean up uncommitted files left over from Spark jobs, use the VACUUM command to remove them. 通常 VACUUM 、Spark ジョブの完了後に自動的に発生しますが、ジョブが中止された場合には手動で実行することもできます。Normally VACUUM happens automatically after Spark jobs complete, but you can also run it manually if a job is aborted.

たとえば、は、 VACUUM ... RETAIN 1 HOUR 1 時間を経過したコミットされていないファイルを削除します。For example, VACUUM ... RETAIN 1 HOUR removes uncommitted files older than one hour.

重要

  • 1時間未満の期間の削除は避けてください。Avoid vacuuming with a horizon of less than one hour. データの不整合が発生する可能性があります。It can cause data inconsistency.

Vacuum」も参照してください。Also see Vacuum.

SQLSQL

-- 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]

ScalaScala

// recursively vacuum an output path
spark.sql("VACUUM '/path/to/output/directory' [RETAIN <N> HOURS]")

// vacuum all partitions of a catalog table
spark.sql("VACUUM tableName [RETAIN <N> HOURS]")