Библиотеки разделения текстовых файлов на Java - PullRequest
1 голос
/ 26 ноября 2008

Моя программа получает большие CSV-файлы и преобразует их в XML-файлы. Чтобы иметь лучшую производительность, я хотел бы разбить эти файлы на более мелкие сегменты (например) 500 строк. Каковы доступные библиотеки Java для разделения текстовых файлов?

Ответы [ 3 ]

4 голосов
/ 26 ноября 2008

Я не понимаю, что вы получите, разбив CSV-файл на более мелкие? С Java вы можете читать и обрабатывать файл по мере необходимости, вам не нужно читать все сразу ...

2 голосов
/ 26 ноября 2008

Что вы собираетесь делать с этими данными?

Если это просто запись с обработкой записи, тогда будет использоваться ориентированный на события (SAX или StaX) анализ. Для записи за обработкой записи может применяться существующий «конвейерный» инструментарий.

Вы можете предварительно обработать ваш файл с помощью функции сплиттера, например this или this Splitter.java .

0 голосов
/ 27 ноября 2008

Как вы планируете распределять работу после разделения файлов?

Я сделал нечто похожее на это на платформе, называемой GridGain, - это сеточная вычислительная среда, которая позволяет вам выполнять задачи на сетке компьютеров.

Имея это в виду, вы можете использовать поставщика кеша, такого как JBoss Cache, чтобы распределить файл по нескольким узлам, указать номер начальной и конечной строки и процесс. Это описано в следующем примере GridGain: http://www.gridgainsystems.com/wiki/display/GG15UG/Affinity+MapReduce+with+JBoss+Cache

В качестве альтернативы вы можете посмотреть что-то вроде Hadoop и файловой системы Hadoop для перемещения файла между различными узлами.

Та же концепция может быть реализована на вашем локальном компьютере, загрузив файл в кеш, а затем назначив определенные «куски» файла для обработки отдельными потоками. Грид-вычисления на самом деле предназначены только для действительно больших проблем или для прозрачного обеспечения некоторого уровня масштабируемости вашего решения. Возможно, вам придется остерегаться узких мест и блокировок ввода-вывода, но простой пул потоков, в который вы отправляете «задания» после разделения файла, может работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...