Похоже, причиной этой разницы может быть неравномерное распределение данных между картографами.
Я думаю, вы можете проверить, что является первичным ключом таблицы и каков диапазон, такой как минимальные и максимальные значения того же самого. Потому что в зависимости от диапазона данные будут распределяться по мапперам. И проверьте, импортированы ли еще данные двумя последними картографами.
Попробуйте использовать параметр --split-limit
для оптимизации импорта. Если размер созданного разделения больше, чем размер, указанный в этом параметре, то размер разделений будет изменен, чтобы соответствовать этому пределу, и количество разделений изменится в соответствии с этим. Это влияет на фактическое количество картографов и приводит к более сбалансированным картографам.
Если размер разделения, рассчитанный на основе предоставленного параметра --num-mappers
, превышает параметр --split-limit
, фактическое количество сопоставителей будет увеличено. Если значение, указанное в параметре --split-limit
, равно 0 или отрицательно, параметр будет полностью проигнорирован, а размер разделения будет рассчитан в соответствии с количеством преобразователей.
а split-limit поддерживается только для столбцов Integer и Date?
Да, как указано в документации: This only applies to Integer and Date columns. For date or timestamp fields it is calculated in seconds.
См. Ответ stackoverflow.com/a/37389134/7109598. Может быть, решение №3 может вам помочь
параметр
--split-limit
должен принимать значение--num-mappers
?