Я использую MapReduce в Java Hadoop для вычисления разницы между исходящими и входящими ребрами.Например, узел 2 имеет 2 исходящих ребра и 3 входящих ребра, тогда разница равна -1.
src, tgt
1, 2 2 , 1 2 , 33 2 4 2 4, 3
Таким образом, выходные данные должны быть: узел 2, разница: -1.
В функции Mapper я назначил IntWritable +1, если 2 является источником, и -1, если 2 является целью.
, поэтому преобразователь создает следующий Iterable IntWritable и отправляет его в редуктор.
(узел 2, значения (-1, +1, +1, -1, -1))и редуктор возвращает (0, -1) вместо просто -1.
Вывод ниже:
1 0 2 0 2 -13 03 -14 2
Я пробовал это несколько раз с разными сценариями, и я уверен, что это происходит.Я не знаю, как заставить редуктор просто сложить все числа и вернуть одно значение ??