我正在通过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