Cree una lógica de unión personalizada en cascada asegurando solo MAP_SIDE

Tengo 3 tuberías en cascada (una para unir contra otras dos) descritas a continuación,

  • LHSPipe - ( tamaño más grande)

ingrese la descripción de la imagen aquí

  • RHSPipes - ( tamaño más pequeño que posiblemente podría caber en la memoria)

ingrese la descripción de la imagen aquí

Psuedocode de la siguiente manera, este ejemplo involucra dos uniones

IF F1DecidingFactor = YES, luego unirse a LHSPipe con RHS Lookup # 1 BY (LHSPipe.F1Input = RHS Lookup # 1.Join # F1) y establecer el resultado de la búsqueda (SET LHSPipe.F1Output = Result # F1) De lo contrario, SET LHSPipe.F1Output = N / UN

La misma lógica se aplica para el cálculo de F2.

La salida esperada,

ingrese la descripción de la imagen aquí

Este escenario me obligó a seguir con la operación de Unión personalizada, ya que IF-ELSE decide si unirse o no.

Teniendo en cuenta el escenario anterior, me gustaría ir a la unión MAP-SIDE (mantener RHSPipe en memoria del nodo de tarea MAP), estaba pensando en las posibles soluciones a continuación, cada una tiene sus ventajas y desventajas. Necesito sus sugerencias sobre estos.

Opción 1:

CoGroup: podemos construir una lógica de unión personalizada usando CoGroup con BufferJoiner seguido de unión personalizada (operación), pero eso no aseguraría la unión MAP-SIDE.

Opcion 2:

HashJoin: garantiza la unión de MAP-SIDE, pero por lo que veo, la unión personalizada no se puede construir con esto.

Corrija mi comprensión y sugiera sus opiniones para trabajar en este requisito.

Gracias por adelantado.

Respuesta 1

¡Es difícil pensar en un título para este! Tengo un bean que se inicializa en un contenedor de resorte. Carga clases que también crean objetos a partir de archivos utilizando cargadores de clases Spring. Algunos de estos objetos ...

He generado una aplicación JHipster usando estos valores: {"generator-jhipster": {"jhipsterVersion": "3.1.0", "baseName": "app", "packageName": "my.app", "packageFolder": "mi/...

Estoy usando joda-time (1.6.2) en un proyecto y una de las cosas que estoy haciendo es obtener la diferencia entre un tiempo predicho y un tiempo real. A veces esta diferencia es positiva, a veces ...

Estoy tratando de manejar clickjacking para una aplicación web java. Obtuve una solución de Clickjacking Defense Cheat Sheet. He agregado un filtro en web.xml <? Xml version = "1.0" encoding = "UTF-8"?> & ...