Map Reduce-将mapper的输出作为字典中的字典传递给reducer

时间:2013-10-26 12:11:14

标签: python file-io hadoop dictionary mapreduce

我的mapper python脚本生成的输出为[2323223,[{'word':'hi'},{'charcount':'2'}] 在输出中,2323223是键,其余都是键2323223的值,但在值中,字典中有多个键值对。

我的映射器脚本的一部分:

 analysis = {}
 wordanalysis = {}
 found = True

 for line in sys.stdin:
 (n1,n6) = re.split("\t+",line.strip())
 #n6 are the words and n1 is id
 words= re.split("\s+", n6.strip().lower())


 for i in range(0, len(words)):
  #adding id to a dictionary
   #n1 is id
    analysis[n1] = wordanalysis
    wordanalysis["word"] = words[i]
    wordanalysis["charcount"]= len(words[i])

    if len(words[i]) > 7:
       wordanalysis["longword"] = found
    else:
       wordanalysis["longword"] = not(found)

这样的事情。我的reducer应该像计算单词的数量等,但它将如何解释那里的字典..就像在reducer中: 对于sys.stdin中的行:

mapper的输出:

['34324242'] [{'word': 'hi','charcount': 2}]
['897924242'] [{'word': 'hello','charcount': 5}]

这是我的输出。我将此值从mapper脚本传递给reducer脚本。 reducer使用上面的o / p作为输入并进行数据分析,例如charcount的总数。知道怎么做吗?
主要的挑战是从mapper输出中获取dict值,以及如何根据dict中的键检索它们。

感谢。

0 个答案:

没有答案