DBIOを使用したクラウドストレージへのトランザクション書き込み
このドキュメントは廃止されており、更新されない可能性があります。 このコンテンツに記載されている製品、サービス、またはテクノロジはサポートされなくなりました。 「Databricks の ACID 保証とは」を参照してください。
Databricks DBIO パッケージは、Apache Spark ジョブのクラウド ストレージへのトランザクション書き込みを提供します。 これにより、Spark をクラウドネイティブ設定で使用するときに発生するパフォーマンスと正確性の多くの問題が解決されます (たとえば、ストレージ サービスに直接書き込む場合)。
コミット・プロトコルは、 *
で終わるパスを使用してデータにアクセスする場合、尊重されません。 たとえば、 dbfs:/my/path
を読み取るとコミットされた変更のみが返されますが、 dbfs:/my/path/*
を読み取ると、内容がコミットされたかどうかに関係なく、ディレクトリ内のすべてのデータ ファイルの内容が返されます。 これは正常な動作です。
DBIO トランザクション コミットでは、 _started_<id>
で始まるメタデータ ファイルと _committed_<id>
は、Spark ジョブによって作成されたデータ ファイルに付属します。 通常、これらのファイルを直接変更しないでください。 むしろ、 VACUUM
コマンドを使用してそれらをクリーンアップする必要があります。
コミットされていないファイルをクリーンアップする
Spark ジョブから残ったコミットされていないファイルをクリーンアップするには、 VACUUM
コマンドを使用してファイルを削除します。 通常、VACUUM
はジョブの完了後に自動的に行われます Spark 、ジョブが中止された場合は手動で実行することもできます。
たとえば、 VACUUM ... RETAIN 1 HOUR
は 1 時間以上経過したコミットされていないファイルを削除します。
- 地平線が1時間未満の vacuum は避けてください。 データの不整合が発生する可能性があります。
vacuumも参照してください。
- SQL
- Scala
-- 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]
// 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]")