Как вы улучшаете производительность в работе со свиньями, у которой есть очень искаженные данные?
Я запускаю сценарий 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);
}
Изучив счетчики для медленных задач, я понял, что похоже, что два редуктора обрабатывают намного больше данных, чем другие задачи. В основном, я понимаю, что данные очень искажены, и поэтому задачи, которые "медленный" на самом деле делают больше работы, чем быстрые задачи. Я'Мне просто интересно, как улучшить производительность? Я ненавижу увеличивать параллелизм, пытаясь разделить работу, но разве это единственный путь?