Как сделать агрегацию с помощью Spring Batch? - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь выяснить, как выполнить агрегацию с помощью Spring Batch. Например, у меня есть файл CSV со списком имен:

name
John
Amy
John
Ryan

И я хочу, чтобы количество имен в текстовом файле:

name, count
Amy, 1
John, 2
Ryan, 1

Из того, что я узнал из Spring Batch, пакетный процесс ETL (itemReader -> ItemProcessor -> ItemWriter) больше похож на фазу отображения в жаргоне карты-сокращения. Как выполнить фазу уменьшения (агрегации) в Spring Batch?

Является ли Spring Batch правильным инструментом для использования? Или я должен использовать Spark для этого? Спасибо.

1 Ответ

0 голосов
/ 19 ноября 2018

ItemProcessor обычно используется для фильтрации, проверки или отображения данных из одного типа в другой, но также может использоваться для любого вида обработки, например подсчета в вашем случае.В вашем примере обработчик элементов может хранить карту name -> count и подсчитывать имена по мере их прохождения по конвейеру.

Модель обработки, ориентированная на фрагменты, не отображается непосредственно в модель сокращения карты.Тем не менее, разделение это то, что вы ищете.StepExecutionSplitter и StepExecutionAggregator являются ключевыми понятиями для выполнения сокращения карты как локальные или удаленные операции.Подробнее об этом в разделе Partitioning справочной документации.

Есть похожий вопрос к этому, я добавляю его сюда для справки: Как агрегировать по полнойнабор данных в пакетных заданиях Spring?

Надеюсь, это поможет.

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