Я использую Spring Batch для обработки файла с 3 миллионами строк данных.Файл структурирован следующим образом:
ID1-Adress1-NumberPhone1
ID1-Adress2-NumberPhone2
ID1-Adress3-NumberPhone3
ID2-Adress1-NumberPhone1
ID2-Adress2-NumberPhone2
ID3-Adress1 NumberPhone1
...
Мне нужно читать файл по идентификатору, а не построчно.Например:
read
ID1-Adress2-NumberPhone2
ID1-Adress3-NumberPhone3
ID2-Adress1-NumberPhone1
ID2-Adress2-NumberPhone2
, затем создайте объект Person, имеющий в качестве атрибутов идентификатор и Map <String, String>
(для адреса, numberPhone), передайте этот объект процессору, затем прочитайте связанные строкисо вторым идентификатором и т. д., пока у меня не будет объекта List of Person, который можно передать автору записи.В частности, мне нужно, чтобы мой читатель завершил каждый многострочный объект перед его отправкой в процессор и до того, как писатель сохранит его в базе данных.
Процесс, которому я следовал, создал шаг, который затем читает построчнопередает эту строку как объект автору, в этом авторе я зацикливаюсь на тех объектах, имеющих тот же идентификатор, и я сопоставляю их (записываю) в другом объекте, который является моим полным объектом, затем второй шаг, который принимает этот окончательный список завершенных объектовчитает его и вставляет в базу данных, проблема в том, что этот шаг занимает больше времени, чем 2H для 1-го шага
есть ли метод, процесс агрегации в считывателе?Я попытался увидеть этот пример https://github.com/spring-projects/spring-batch/tree/master/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/ в несколько строк, но я совсем не понял, мне нужен простой конкретный пример, адаптируясь к формату файла, приведенному выше