Можно ли выполнять операции стиля MapReduce в SpringBatch?
У меня есть два шага в моей пакетной работе. Первый шаг вычисляет среднее значение. На втором этапе каждое значение сравнивается со средним, чтобы определить другое значение.
Например, допустим, у меня есть огромная база данных с оценками учащихся. На первом этапе рассчитывается средний балл по каждому курсу/экзамену. На втором этапе отдельные баллы сравниваются со средними, чтобы определить оценку на основе некоторого простого правила:
- A, если учащийся набрал выше среднего
- B, если балл ученика средний
- C, если учащийся набирает ниже среднего
В настоящее время моим первым шагом является Sql, который выбирает среднее значение и записывает его в таблицу. Второй шаг — это Sql, который объединяет средние оценки с индивидуальными оценками и использует процессор для реализации правила.
Существуют аналогичные функции агрегации, такие как avg, min, которые часто используются в Steps, и я действительно предпочел бы, чтобы это можно было сделать в процессорах, сохраняя Sqls как можно более простыми. Есть ли способ написать процессор, который агрегирует результаты по нескольким строкам на основе критериев группировки, а затем один раз записывает среднее/минимальное значение в выходную таблицу?
Этот шаблон часто повторяется, и я не ищу реализацию с одним процессором, использующую Sql, которая извлекает как средние, так и индивидуальные оценки.