В чем разница между Сортировщиком сравнения и Групповым компаратором в Hadoop?
Каковы различия между сортировщиком сравнения и групповым компаратором в Hadoop?
Ответ 1
Чтобы понять GroupComparator, см. мой ответ на этот вопрос -
Какая польза от компаратора группировки в карте hadoop уменьшает
SortComparator. Используется для определения того, как сортируются ключи вывода карты.
Выдержки из книги Hadoop - Окончательное руководство:
Порядок сортировки для ключей определяется следующим образом:
-
Если свойство
mapred.output.key.comparator.class
установлено либо явно, либо вызовsetSortComparatorClass()
в Job, тогда используется экземпляр этого класса. (В старый API эквивалентный методsetOutputKeyComparatorClass()
наJobConf
.) -
В противном случае ключи должны быть подклассом
WritableComparable
, а зарегистрированные используется компаратор для ключевого класса. -
Если нет зарегистрированного компаратора, тогда используется
RawComparator
, который десериализует потоки байтов сравниваются с объектами и делегируются методуWritableComparable
scompareTo()
.
SortComparator Vs GroupComparator в одном слое:
SortComparator
решает, как сортировать ключи вывода карты, а GroupComparator
решает, какие ключи вывода карты в редукторе идут на один и тот же метод вызова метода.
Ответ 2
Групповой компаратор решает, какие ключи вывода карты будут объединены (сгруппированы) в один ключ, и, конечно же, будут сгруппированы все коллекции значений. Обычно он принимает первый ключ как единственный для сводной коллекции.
SortComparator решает, как ключи будут сортироваться в вводе сокращения. По умолчанию используется естественный порядок.