2017-10-23 9 views
0

なぜファイルシステムに結果を保存して、結果ファイルを_temporaryディレクトリにアップロードしてから、出力フォルダに直接アップロードするのではなく、出力フォルダに移動するのはなぜですか?Spark _temporary creation reason

答えて

3

2段階プロセスは、ファイルシステムを扱う際の最終結果の一貫性を保証する最も簡単な方法です。

各エグゼキュータスレッドは、他のスレッドとは独立した結果セットを書き込み、異なる時点で書き込みを実行したり、同じリソースセットを再利用することができます。書き込みの瞬間、Sparkはすべての書き込みが成功するかどうか判断できません。

  • エラーが発生した場合、一時ディレクトリを削除して変更をロールバックできます。
  • 成功した場合は、一時ディレクトリを移動して変更をコミットできます。

このモデルのもう1つの利点は、進行中の書き込みと最終出力の明確な区別です。その結果、別の状態ストアやその他の同期メカニズムを必要とせずに、簡単なワークフロー管理ツールと簡単に統合できます。

このモデルはシンプルで信頼性が高く、設計されたファイルシステムでうまく機能します。残念ながら、移動をサポートしていないオブジェクトストアではうまく機能しません。

関連する問題