3
我有MapReduce的輸入,看起來像這樣:Hadoop的MapReduce的流排序多個列
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