3

フラット CSV ファイルのチャンク (コミット レベル = 10) を読み取り、出力を別のフラット ファイルに書き込む、Spring バッチ ジョブを作成しました。簡潔でシンプル。ローカル スケーリングをテストするために、10 個のスレッドのプールを持つ TaskExecutor を使用してタスクレットを構成し、マルチスレッド ステップ パターンを使用して並列処理を導入しました。予想どおり、これらのスレッドは、チャンクがいっぱいになるまでアイテムを同時に読み取り、チャンクが出力ファイルに書き込まれます。また、予想どおり、この同時読み取りのために項目の順序が変更されました。しかし、できれば複数のスレッドを使用することで得られるパフォーマンスの向上を活用しながら、固定された順序を維持することは可能でしょうか?

4

2 に答える 2

2

簡単な方法が思いつきません。回避策は、読み取り中に順次作成される ID をすべての行にプレフィックスとして付けることです。仕事が終わったら、行をIDでソートします。ハックに聞こえますが、動作するはずです。

于 2011-08-19T10:20:55.290 に答える
0

簡単な解決策はないと思いますが、1 つのライター スレッド (書き込み時に並べ替えも実行します) と複数の読み取りスレッドを使用するだけで機能しますが、スケーラブルではありません。

于 2011-08-19T10:25:51.937 に答える