我有一个类似于以下内容的模式:
{
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示例可以工作,我会很乐意接受它。
您可以尝试以下算法:
地图
输入:K1 = "文件偏移量",V1 = Jason 对象
输出: K2 = "pid : 1", V2 = "计数: 2"
减少
输入:K2 = "pid: 1",V2 列表("计数:2,计数:4,计数:6")
输出: K3 = "pid: 1", V3 : "(V2 的最大值减去 V2 的最小值)"
在架构中假定给定批次序列的计数始终是增量的。如果不是,则可以在值中添加"批处理"。
V2="批次:1,计数:2"。
V3 ="最大批次计数减去最小批次计数"