我有一个输入文件
Chicago 500
NewWork 200
California 100
我需要第二列的差异作为每个城市与其他的输出
Chicago Newyork 300
Chicago California 100
Newyork Chicago -300
Newyork California 100
California Chicago -400
California Newyork -100
我尝试了很多,但都没能找出在地图中实现reduce的准确和正确的方法。请给我一些解决方案
这里有一个伪代码。我经常使用Python,所以它看起来更像它。要做到这一点,你必须知道行的总数(即这里的城市(,并在运行作业之前将其用于N。
map(dummy, line):
city, pop = line.split()
for idx in 1:N
emit(idx, (city, pop))
reduce(idx, city_data):
city_data.sort() # sort by city to ensure indices are consistent
city, pop = city_data[idx]
for i in 1:N
if idx != i:
c, p = city_data[i]
dist = pop - p
emit(city, (c, dist))