如何使用Aggregate Hadoop包找到所有键的最小值?

时间:2016-04-10 17:54:03

标签: python hadoop mapreduce

我正在通过Cloudera使用Hadoop。  我需要在几个文本文件中找到最小值和密钥

文本文件(* .txt)具有包含键值对的格式:

A  1
B  2
C  3

输出应为:

A   1

但我得到了:

A  1
B  2
C  3

因为代码根据键A',' B'给出了最小值。和' C'分别。有没有办法使用聚合包来获得输出作为最小值:

A   1

这是mapper.py。

import sys

def generateLongMinToken(word,value):    
    return "LongValueMin:" + word + "\t" + value

def main(argv):                   
   line = sys.stdin.readline()
   try:
        while line:
        word, value =  line.rstrip().split() # remove leading and trailing whitespace  # split the line into words   
        print generateLongMinToken(word,value)
        line = sys.stdin.readline()
   except "end of file":
        return None

if __name__ == "__main__":
 main(sys.argv)

这是hadoop命令:

 hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
-file mapper.py -mapper mapper.py \
-reducer aggregate \
-input /user/cloudera/gutenberg/min/* \
-output /user/cloudera/gutenberg/min_output

0 个答案:

没有答案