java - 在 MapReduce Iterable IntWritable 中对正数和负数求和
问题描述
我在 Java Hadoop 中使用 MapReduce 来计算传出边和传入边之间的差异。例如节点 2 有 2 条出边和 3 条入边,则差值为 -1。
src, tgt
1, 2
2 , 1
2 , 3
3, 2
4, 2
4, 3
所以输出应该是:节点2,差异:-1。
在 Mapper 函数中,如果 2 是源,我分配 IntWritable +1,如果 2 是目标,则分配 -1。
所以映射器在 Iterable IntWritable 之后生成这个并将其发送到 Reducer。
(node 2, values(-1, +1, +1, -1, -1)) 并且reducer返回(0, -1)而不是-1。
下面的输出:
1 0
2 0
2 -1
3 0
3 -1
4 2
我在不同的场景下尝试了几次,这就是我相信正在发生的事情。我不知道如何让减速器简单地添加所有数字并返回一个值?
解决方案
推荐阅读
- python - 计算Python中一维数组中最大点后每个(左右点)的距离
- jquery-mobile - JQuery外部工具栏不显示
- angular - 无法在角度单元测试中模拟服务并返回数据 - 未定义
- c# - CSharpScripting 安全性
- c# - 激活后如何禁用 AdaptiveSubmitAction 按钮?
- python - 我从串行收集数据的线程/计时器只运行一次
- c++ - 未定义模板 'std::__1::vector 的隐式实例化
- ' 错误
- spring - Spring Cloud 2020.0.0 版本后备方法无效
- reactjs - 该脚本具有不受支持的 MIME 类型 ('text/html')。反应 JS
- javascript - Javascript - 带放大镜的线性滑块