2008-11-26 3 views
1

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

ответ

2

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

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

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

4

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

+0

Я использую коммерческий перевод B2B для преобразования CSV-файла в XML, и этот SW не обрабатывает большие файлы очень хорошо ... – Otavio 2008-11-26 22:59:51

0

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

Я сделал что-то подобное этому в структуре под названием GridGain - это грид-вычислительная среда, которая позволяет выполнять задачи на сетке компьютеров.

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

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

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

Смежные вопросы