在处理函数之后,键控流是否变为非键控?
Is a keyed stream become not keyed after a process function?
假设我在键控过程后得到一个流。
DataStream<T> stream= sourceStream.keyBy(key).window(window).apply(function);
生成的流是否仍然是键控的?我可以在该流中使用一些 Keyed 状态吗?
没错,键控 window 或键控处理函数的输出不再是键控流。 Flink 无法知道您执行的计算是否会保留事先存在的分区。
要使用键控状态,您需要重新对流进行键控,或者如果您确定原始键控已被保留,您可以使用 reinterpretAsKeyedStream 通知 Flink 流仍然键控。
假设我在键控过程后得到一个流。
DataStream<T> stream= sourceStream.keyBy(key).window(window).apply(function);
生成的流是否仍然是键控的?我可以在该流中使用一些 Keyed 状态吗?
没错,键控 window 或键控处理函数的输出不再是键控流。 Flink 无法知道您执行的计算是否会保留事先存在的分区。
要使用键控状态,您需要重新对流进行键控,或者如果您确定原始键控已被保留,您可以使用 reinterpretAsKeyedStream 通知 Flink 流仍然键控。