我的架构类似于:
{
id: 1,
pid: 1,
batch: 1,
count: 2,
}
{
id: 2,
pid: 1,
batch: 2,
count: 4,
}
{
id: 3,
pid: 1,
batch: 3,
count: 6,
}
我想写一个map-reduce函数来返回最近批次和最早批次的计数之间的增量差异。
根据上面的数据,这将返回如下内容:
pid: 1, diff: 4
有关如何解决此问题的任何想法?我正在使用Mongo,但是如果有一个Java / Hadoop示例可行,我会高兴地接受它。
答案 0 :(得分:0)
您可以尝试以下算法:
<强>地图
输入:K1 =“文件偏移”,V1 = Jason对象
输出:K2 =“pid:1”,V2 =“count:2”
<强>减少强>
输入:K2 =“pid:1”,V2列表(“计数:2,计数:4,计数:6”)
输出:K3 =“pid:1”,V3:“(最大值V2减去V2的最小值)”
在模式中假设计数对于给定的批次系列始终是递增的。如果不是,则可以向该值添加“批处理”。
V2 =“批次:1,计数:2”。
V3 =“最大批次数减去最小批次数”