¿Cómo se mejora el rendimiento en un trabajo porcino que tiene datos muy sesgados?

Estoy ejecutando un script pig que realiza un GROUP BY y un FOREACH anidado que tarda horas en ejecutarse debido a una o dos tareas de reducción. Por ejemplo:

B = GROUP A BY (fld1, fld2) parallel 50;

C = FOREACH B {
   U = A.fld1;
   DIST = DISTINCT U;
   GENERATE FLATTEN(group), COUNT_STAR(DIST);
}

Al examinar los contadores para las tareas lentas, me di cuenta de que parece que los dos reductores están procesando muchos más datos que las otras tareas. Básicamente, mi entendimiento es que los datos son muy sesgados y, por lo tanto, las tareas que son "lentas" están haciendo más trabajo que las tareas rápidas. Me pregunto cómo mejorar el rendimiento? Odio aumentar el paralelismo para tratar de dividir el trabajo, pero ¿es esa la única manera?

Respuestas a la pregunta(1)

Su respuesta a la pregunta