Как наиболее эффективно обрабатывать строки CSV-файла с помощью Groovy / GPars?

Вопрос простой, и я удивлен, что он не всплыл сразу, когда я его искал.

У меня есть файл CSV, потенциально очень большой, который нужно обработать. Каждую строку следует передать процессору до тех пор, пока не будут обработаны все строки. Для чтения файла CSV я буду использовать OpenCSV, который, по сути, предоставляет метод readNext (), который дает мне следующую строку. Если доступных строк больше нет, все процессоры должны завершить работу.

Для этого я создал действительно простой Groovy-скрипт, определил синхронный метод readNext () (поскольку чтение следующей строки на самом деле не занимает много времени), а затем создал несколько потоков, которые читают следующую строку и обрабатывают ее. Он работает нормально, но ...

Разве не должно быть встроенного решения, которое я мог бы просто использовать? Это не обработка коллекции gpars, потому что всегда предполагается, что в памяти уже есть коллекция. Вместо этого я не могу позволить себе прочитать все это в памяти, а затем обработать, это приведет к исключениям вне памяти.

Итак ... у кого-нибудь есть хороший шаблон для обработки CSV-файла "построчно" с помощью пары рабочих потоков?

10
задан Sven Haiges 13 October 2011 в 14:47
поделиться