Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MapReduce-在reducer中迭代键和值_Python_Hadoop_Mapreduce_Mrjob - Fatal编程技术网

Python MapReduce-在reducer中迭代键和值

Python MapReduce-在reducer中迭代键和值,python,hadoop,mapreduce,mrjob,Python,Hadoop,Mapreduce,Mrjob,我很难理解如何迭代值。我有一个映射器,它将传入如下内容: (cat, *): 5 (cat, *): 5 (cat, dog): 1 (pigeon, dog): 1 (hello, world): 1 (cat, dog): 1 (pigeon, dog): 1 (hello, world): 1 我试图找到其中包含*的任何键/值对的总值,以便使用它进行一些统计分析。然后,我尝试将其他键值对的计数之和作为变量,用“*”总值除以它 def reducer(self, pair, counts)

我很难理解如何迭代值。我有一个映射器,它将传入如下内容:

(cat, *): 5
(cat, *): 5
(cat, dog): 1
(pigeon, dog): 1
(hello, world): 1
(cat, dog): 1
(pigeon, dog): 1
(hello, world): 1
我试图找到其中包含*的任何键/值对的总值,以便使用它进行一些统计分析。然后,我尝试将其他键值对的计数之和作为变量,用“*”总值除以它

def reducer(self, pair, counts):
从上面的代码行中,我将如何迭代

从映射器中,我得到如下结果:
(项目,邻居),1
(项目,“*”),1

我知道这些项是生成器对象,所以我必须在for循环中迭代才能真正执行任何操作

编辑:从文本文件读取数据,然后在映射器中传递数据,如下所示:

yield(word1,word2):1

预期产出:

(cat, dog): 0.33333333
计算为cat、dog单词对的数量除以对的总数(cat,*)


为了更清楚一点,我正在尝试用一些可靠的数据结构示例更新您的问题,以获得

Plz中的答案。你在处理列表、文件等吗?@trixie如果你举个例子,这会有所帮助。例如,(猫,*)有2条记录,(猫,狗)有2条记录。对于这些记录,预期的输出是什么?(cat,*)有10条记录。例如,我希望将其记录在一个变量中。然后,对于每一个其他单词对,我希望以值为例(Cat,鸽子),3,然后将值除以10(来自Cat变量),这样我可以找到条件概率,因此预期输出类似:(Cat,鸽子)0.033