我有一個Map Reduce程序,並且在Reducer類中,我的方法在第一次迭代中沒有被調用。我想要實現的是在迭代器的每兩個連續值之間生成一些新行。 (對如:(1,2),(2,3),(3,4)...)。我錯過了什麼?我還測試了我有我需要的對,它看起來很好,但似乎我的方法不是第一對調用。 generate() - 將在每兩個連續行之間生成新行(填滿時間間隙)第一次迭代時Hadoop迭代器跳過方法調用
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
你能擴大在你的問題上,它真的不清楚你的事後和問題是什麼。如果我想測試你的代碼,那麼基於你提供的內容是否可能?我需要示例輸入,輸出和您的預期輸出。你稱之爲「生成」方法,那是什麼? –
@Binary Nerd你現在可以看到我的更新 – user0221
你可以添加你的生成方法的邏輯。 –