我的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中的键检索它们。
感谢。