У меня есть вход MapReduce, который выглядит следующим образом:Hadoop MapReduce Streaming сортировочные на несколько столбцов
key1 \t 4.1 \t more ...
key1 \t 10.3 \t more ...
key2 \t 6.9 \t more ...
key2 \t 3 \t more ...
Я хочу, чтобы отсортировать по первому столбцу затем второй колонке (обратный числовой). Есть ли способ достичь этого Streaming MapReduce?
Моя текущая попытка это:
hadoop jar hadoop-streaming-1.2.1.jar -Dnum.key.fields.for.partition=1 -Dmapred.text.key.comparator.options='-k1,2rn' -Dmapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator -mapper cat -reducer cat -file mr_base.py -file common.py -file mr_sort_combiner.py -input mr_combiner/2013_12_09__05_47_21/part-* -output mr_sort_combiner/2013_12_09__07_15_59/
Но это сортировка по первой части ключа и второго (но не сортирует второй как числовые, а в виде строки).
Любые идеи о том, как я могу сортировать два поля (одно числовое и одно текстовое)?
это не работает для меня на Hadoop 2.7.3 ... любая идея, почему? (Моя точная конфигурация - '-D mapreduce.partition.keycomparator.options = '- k1,2 -k3,3nr -k4,4nr'', но она не работает) – refaelos