Hadoop Grouping Comparator - PullRequest
       10

Hadoop Grouping Comparator

0 голосов
/ 07 октября 2018

Я писал приложение MapReduce для выполнения соединения на стороне сокращения на двух таблицах (один из рейсов с внешним ключом идентификатора аэропорта назначения и один из идентификаторов аэропорта сопоставляется с их именами).

Оба набора данных будут, после сопоставления используйте один пользовательский формат CompositeKey (airportID, datasetIndicator), где datasetIndicator = 0 для набора данных аэропортов и 1 для набора данных рейсов.

Затем я бы разделил пары, используя только часть ключа airportID, чтобыубедитесь, что все пары с одним и тем же airportID попадают в один и тот же редуктор.

Используя пользовательский GroupComparator, я бы обеспечил обработку всех пар с одним и тем же идентификатором airportID в одном вызове сокращения.

Теперь я ожидаю, что при уменьшении значение первой пары содержит название аэропорта.

Для полной сортировки ключей я сравниваю сначала datasetIndicator, а затем airportID, однако это дает неверные результаты.,По какой-то причине все аэропорты получают собственные сокращения вызовов без каких-либо связанных рейсов.

Простое изменение порядка сравнения полей в CompositeKey решает проблему.Я не совсем понимаю, почему.

Я предполагаю, что когда GroupComparator завершен, пары в каждой группе отсортированы по полному ключу, поэтому, поскольку здесь все идентификаторы airportID одинаковы, пара (airportID, 0) (который содержит имя в качестве значения) должен стоять сверху, независимо от порядка сравнения полей.

Это не так.Похоже, пары аэропортов и пары рейсов даже не оказываются вместе в одном и том же вызове сокращения.

Единственное изменение в коде - это порядок сравнения полей CompositeKey compareTo ().

Существует ли неявная зависимость результата этапа группировки от порядка пар в разбиении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...