質問は単純ですが、私がそれを探してすぐにポップアップしなかったのは驚きです。Groovy/GParsを使用してCSVファイルの行を最も効率的に処理する方法は?
私は、処理が必要な、潜在的に非常に大きいCSVファイルを持っています。すべての行が処理されるまで、各行をプロセッサに渡す必要があります。 CSVファイルを読み込むために、私は次の行を与えるreadNext()メソッドを提供するOpenCSVを使用します。使用可能な行がもうない場合は、すべてのプロセッサーを終了する必要があります。
私は非常にシンプルなスクリプトを作成し、同期readNext()メソッドを定義しました(次の行の読み込みには時間がかかりません)。次の行を読み込んで処理するスレッドをいくつか作成しました。それは正常に動作しますが、...
私はちょうど使用できる組み込みのソリューションはありませんか?これは、常にメモリ内に既存のコレクションがあると仮定しているため、gparsコレクション処理ではありません。代わりに、私はそれをすべてメモリに読み込み、それを処理する余裕がありません。それは、メモリ不足の例外につながります。
だから、誰かがCSVファイルを「行単位で」処理するための素晴らしいテンプレートをワーカースレッドのカップルを使用して使用していますか?
この例では、readCsv()呼び出しがCSVの1行を返すとしますか?ちょうど私がこの権利を読んでいることを確認したい。 – Scott
はい、 'readCsv()'は各行を順に読み込みます。ファイルの終わりに達すると、ヌルが返され、プロセッサは終わりに達したことを知り、 'terminate()'しなければなりません。 – ataylor