为什么在 mapWithState 中相同的元素都被打印
Why are all elements printed although they are the same in mapWithState
我正在向 JavaPairDStream 发送同一个对象 3 次。我正在更新它的状态,但它已保存 3 次。打印 JavaPairDStream 证实了这一点。
Function3<InputMessageKey, Optional<InputMessage>, State<InputMessage>, Tuple2<InputMessageKey, InputMessage>> mappingFunction = new Function3<InputMessageKey, Optional<InputMessage>, State<InputMessage>, Tuple2<InputMessageKey, InputMessage>>() {
@Override
public Tuple2<InputMessageKey, InputMessage> call(InputMessageKey key, Optional<InputMessage> value, State<InputMessage> state) {
InputMessage inputMessage = value.get();
Tuple2<InputMessageKey, InputMessage> output = new Tuple2<>(key, inputMessage);
state.update(inputMessage);
return output;
}
};
打印流:
(com.input.InputMessageKey@220593a0,com.input.InputMessage@781bfd72)
(com.input.InputMessageKey@220593a0,com.input.InputMessage@781bfd72)
(com.input.InputMessageKey@220593a0,com.input.InputMessage@781bfd72)
三次都没有保存。您将返回在函数末尾创建的 Tuple2
对象,这就是打印出来的内容。如果您想查看已保存的内部状态,请在图表中使用 JavaMapWithStateDStream.stateSnapshots
而不是迭代 mapWithState
.
的输出
我正在向 JavaPairDStream 发送同一个对象 3 次。我正在更新它的状态,但它已保存 3 次。打印 JavaPairDStream 证实了这一点。
Function3<InputMessageKey, Optional<InputMessage>, State<InputMessage>, Tuple2<InputMessageKey, InputMessage>> mappingFunction = new Function3<InputMessageKey, Optional<InputMessage>, State<InputMessage>, Tuple2<InputMessageKey, InputMessage>>() {
@Override
public Tuple2<InputMessageKey, InputMessage> call(InputMessageKey key, Optional<InputMessage> value, State<InputMessage> state) {
InputMessage inputMessage = value.get();
Tuple2<InputMessageKey, InputMessage> output = new Tuple2<>(key, inputMessage);
state.update(inputMessage);
return output;
}
};
打印流:
(com.input.InputMessageKey@220593a0,com.input.InputMessage@781bfd72)
(com.input.InputMessageKey@220593a0,com.input.InputMessage@781bfd72)
(com.input.InputMessageKey@220593a0,com.input.InputMessage@781bfd72)
三次都没有保存。您将返回在函数末尾创建的 Tuple2
对象,这就是打印出来的内容。如果您想查看已保存的内部状态,请在图表中使用 JavaMapWithStateDStream.stateSnapshots
而不是迭代 mapWithState
.