Как вы улучшаете производительность в работе со свиньями, у которой есть очень искаженные данные?

Я запускаю сценарий PIG, который выполняет GROUP BY и вложенный FOREACH, выполнение которого занимает несколько часов из-за одной или двух задач сокращения. Например:

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

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

Изучив счетчики для медленных задач, я понял, что похоже, что два редуктора обрабатывают намного больше данных, чем другие задачи. В основном, я понимаю, что данные очень искажены, и поэтому задачи, которые "медленный" на самом деле делают больше работы, чем быстрые задачи. Я'Мне просто интересно, как улучшить производительность? Я ненавижу увеличивать параллелизм, пытаясь разделить работу, но разве это единственный путь?

Ответы на вопрос(1)

Ваш ответ на вопрос