【发布时间】:2017-06-13 20:21:01
【问题描述】:
我有一个 Map Reduce 程序,并且在 Reducer 类中我的方法在第一次迭代中没有被调用。我想要实现的是在迭代器的每 2 个连续值之间生成一些新行。 (对,如:(1,2),(2,3),(3,4)...)。我错过了什么?而且我还测试了我有我需要的对,它看起来不错,但似乎我的方法没有为第一对调用.. generate() - 将在每 2 个连续行之间生成新行(填补时间间隙)
input:
X, Y, 00:00:00, 908
X, Y, 00:00:05, 122
X, Y, 00:00:07, 123
desired output:
X, Y, 00:00:00, 908
X, Y, 00:00:01, 908
X, Y, 00:00:02, 908
X, Y, 00:00:03, 908
X, Y, 00:00:04, 908
X, Y, 00:00:05, 122
X, Y, 00:00:06, 122
X, Y, 00:00:07, 123
Iterator<MyType> iterator = values.iterator();
if (!iterator.hasNext()) return;
first = iterator.next();
while (iterator.hasNext()) {
nr++;
first.setStatus(nr);
context.write(nullWritable, first);
second = iterator.next();
List<MyType> newValues = generate(first, second, context);
for (MyType mt : newValues) {
mt.setStatus(nr);
context.write(nullWritable, mt);
}
second.setStatus(nr);
context.write(nullWritable, second);
first = new InterpolationModelWritable();
first.setX(second.getX());
first.setY(second.getY());
first.setZ(second.getZ());
first.setTag(second.getTag());
}
actual result:
X, Y, 00:00:00, 908
X, Y, 00:00:05, 122
X, Y, 00:00:06, 122
X, Y, 00:00:07, 123
【问题讨论】:
-
你能扩展你的问题吗,真的不清楚你的目标是什么,问题是什么。如果我想测试您的代码,是否可以根据您提供的内容进行测试?我需要示例输入、输出和您的预期输出。你调用了
generate方法,它有什么作用? -
@Binary Nerd 你现在可以看到我的更新了
-
能否为您的 generate 方法添加逻辑。
-
恐怕我做不到。但它适用于其他输入行。
标签: java hadoop mapreduce iterator