如果需要遍历所有映射器值,应该如何创建reduce?

时间:2019-02-11 22:28:24

标签: python mapreduce

我的映射器有两个产量:

yield (destination,{'origin':origin,'count':count})
yield (origin,{'destination':destination,'count':count})

这给了我类似以下的输出:

('United States', {'origin': 'Romania', 'count': '1'})
('Romania', {'count': '1', 'destination': 'United States'})
('United States', {'origin': 'Ireland', 'count': '264'})
('Ireland', {'count': '264', 'destination': 'United States'})
('United States', {'origin': 'India', 'count': '69'})
('India', {'count': '69', 'destination': 'United States'})
('Egypt', {'origin': 'United States', 'count': '24'})
('United States', {'count': '24', 'destination': 'Egypt'})
('Equatorial Guinea', {'origin': 'United States', 'count': '1'})
('United States', {'count': '1', 'destination': 'Equatorial Guinea'})
('United States', {'origin': 'Singapore', 'count': '25'})
('Singapore', {'count': '25', 'destination': 'United States'})

现在,我需要编写一个reducer,在其中我可以将上述数据分为两组,并使用两个for循环进行迭代。 这样做的想法是找出可以两次跳动的所有可能飞行的总数

例如:

从罗马尼亚到埃及。我们以Romania -> United States and United States -> Egypt. The total possible flights would then be 1*24

据我了解,我需要遍历所有值两次,并在Destination of 1 == origin of another.

处查找键。

直到现在,我认为我需要创建两个组:g1(用于所有基于源的密钥)和g2(用于所有基于目标的密钥)

,然后遍历每个组,找到g1.destination == g2.origin

我朝着正确的方向前进吗?如果是这样的话,这样的功能在reducer中会如何?我似乎无法诚实地弄清楚该如何编码。

0 个答案:

没有答案