2015-10-25 4 views
3

У меня есть некоторые данные, поступающие из редуктора которые так:Hadoop - Правильно сортировать по ключевым и группы по редуктору

9,2 3 
5,7 2 
2,3 0 
1,5 3 
6,3 0 
4,2 2 
7,1 1 

И я хотел бы, чтобы отсортировать их в соответствии с номером на второй колонке. Как это:

2,3 0 
6,3 0 
7,1 1 
5,7 2 
4,2 2 
1,5 3 
9,2 3 

Когда я запускаю свою программу на местном уровне, я использую:

sort -k2,2n 

Но я не знаю, как сделать то же самое на Hadoop. Я попробовал несколько вариант, который не работает, например:

-D mapreduce.partition.keycomparator.options=-k2,2n 

И кроме того, я хотел бы, что все данные, которые имеют один и тот же ключ, чтобы пойти на тот же редуктор. Так что в этом случае:

2,3 0 

и

6,3 0 

должны быть обработаны одним и тем же редуктором.

Любые идеи варианта, который я должен использовать на хаосе?

Спасибо заранее!

ответ

1

В конфигурации по умолчанию задания первые столбцы являются ключами результата редуктора, второе - значением. Для получения результата редуктор обрабатывает все записи с одинаковыми ключами. Поэтому в вашем случае вам нужно выполнить дополнительную работу по созданию карты. Карта поместит второй столбец в качестве ключа и сначала как значение. Это задание будет группировать данные в соответствии с вашим запросом. Но если у вас есть небольшой объем данных в результате, вы устанавливаете только один редуктор на ваше задание -D mapred.reduce.tasks = 1.

Смежные вопросы