¿Es posible realizar operaciones de estilo MapReduce en SpringBatch?Operaciones MapReduce/Aggregate en SpringBatch
Tengo dos pasos en mi trabajo por lotes. El primer paso calcula el promedio. El segundo paso compara cada valor con el promedio para determinar otro valor.
Por ejemplo, digamos que tengo una enorme base de datos de puntajes de estudiantes. El primer paso calcula el puntaje promedio en cada curso/examen. El segundo paso se comparan las puntuaciones individuales con la media para determinar el grado en base a una regla sencilla:
- A si puntuaciones de los estudiantes por encima de la media
- B si la puntuación del estudiante es la media
- C si las puntuaciones de los estudiantes por debajo de la media
Actualmente mi primer paso es un Sql que selecciona el promedio y lo escribe en una tabla. El segundo paso es un Sql que une puntajes promedio con puntuaciones individuales y utiliza un procesador para implementar la regla.
Hay funciones de agregación similares como avg, min usado mucho en Steps y realmente preferiría que esto se pudiera hacer en Processors manteniendo los Sqls lo más simple posible. ¿Hay alguna forma de escribir un procesador que agregue resultados en múltiples filas según un criterio de agrupación y luego escriba una media/minuto en la tabla de resultados una vez?
Este patrón se repite mucho y no estoy buscando una implementación de procesador único con un Sql que obtenga puntuaciones promedio e individuales.