sq oop разделит ваш набор данных, используя столбец --split-by
. Прочитайте, как это работает здесь . Также запустите sq oop в подробном режиме, чтобы лучше понять, как это работает. Он получит минимальное и максимальное значение разделенного столбца и разделит весь диапазон на части num-mappers, предполагая, что разделенный столбец распределен равномерно. Если он распределен неравномерно, sq oop будет неравномерно распределять набор данных между сопоставителями (с перекосом).
И число сопоставителей также настраивается, по крайней мере, в улье. Например, если вы используете Tez, вы можете настроить минимальный и максимальный размер группового разделения:
set tez.grouping.min-size=16777216; -- 16 MB min split
set tez.grouping.max-size=1073741824; -- 1 GB max split
Также вы можете настроить номер разделения и, если возможно, Tez начнет рядом с ним количество картографов (некоторые разделения могут быть объединенным, что-то не может быть разделено, но это повлияет на число картографов):
set tez.grouping.split-count=5000;
Этот подход не рекомендуется, лучше использовать настройки размера разделения выше.
Для механизма выполнения MR :
set mapreduce.input.fileinputformat.split.minsize=16777216; -- 16 MB
set mapreduce.input.fileinputformat.split.maxsize=1073741824; -- 1 GB
Контролировать количество картографов не так просто, потому что зависит от многих факторов. Например, OR C разбивается на уровне полосы, это означает, что вы не можете разделить меньше, чем одна полоса и т. Д. c. Узнайте больше о число картографов