Группируйте и обрабатывайте неупорядоченные записи в файле CSV с помощью Spring Batch.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Группируйте и обрабатывайте неупорядоченные записи в файле CSV с помощью Spring Batch.

Сообщение Anonymous »

Файл CSV необходимо обрабатывать с помощью Spring Batch, где несколько строк могут быть сгруппированы на основе значения поля. В приведенном ниже примере две строки CSV-файла имеют одно и то же GROUP_NAME со значением group_1. Также следует отметить, что записи не обязательно упорядочены.

Код: Выделить всё

GROUP_NAME,ENTITY_NAME,DATA,ADDITIONAL_DATA
group_1,Foo book,"{""paperback"" : true}","{""digital"":false}"
group_999,Bar book,,
group_1,Foo book,"{""edition"":5}"
Конечная цель — создать одну строку базы данных из двух строк для group_1 как:



ID
ENTITY_NAME
DATA
ADDITIONAL_DATA




1
Foo book
{"мягкая обложка": правда, "издание": 5}
{"цифровой": ложь



Spring Batch предоставляет способ разбить входные данные на разделы перед запуском задания, а затем обработать их по частям, но его нельзя применить к этому варианту использования, поскольку записи, принадлежащие одному и тому же GROUP_NAME, являются динамическими и секционирование невозможно использовать. Кроме того, записи, принадлежащие одному и тому же GROUP_NAME, могут охватывать несколько фрагментов, и фрагменты обрабатываются независимо.
Как сгруппировать записи в Spring Batch 5.x, чтобы каждый поток/выполнение был предназначен для одной группы записей, обработка на основе фрагментов не подходит для этого варианта использования, и у меня также есть ограничение, заключающееся в том, что нельзя использовать промежуточную таблицу базы данных (в которую можно было бы загрузить содержимое CSV, а затем было бы предложение GROUP BY) помогло).
Один из способов решить эту проблему:
  • Отсортировать строки в CSV-файле на основе поля GROUP_NAME (да, это будет дорого, и сортировка на уровне операционной системы, похоже, будет производительной)
  • Используйте SingleItemPeekableItemReader для чтения строк, сбора записей(строк) до тех пор, пока в GROUP_NAME не будет обнаружено изменение
Учитывая, что Spring Batch предназначен для независимой обработки записей, существует ли лучший способ по сравнению с сортировкой содержимого файла и группировкой записей с помощью SingleItemPeekableItemReader, чтобы реализовать этот вариант использования с помощью Spring Batch?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ring-batch
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»