Java Flink streaming,究竟是什么';总和';做
我很难理解流媒体,以workcount为例,对于像Kafka这样的无限源,“sum”到底做了什么Java Flink streaming,究竟是什么';总和';做,java,apache-flink,flink-streaming,Java,Apache Flink,Flink Streaming,我很难理解流媒体,以workcount为例,对于像Kafka这样的无限源,“sum”到底做了什么 DataStream<Tuple2<String, Long>> counts = input ...... .returns(Types.TUPLE(Types.STRING, Types.LONG)) .keyBy(0) .sum(1); 数据
DataStream<Tuple2<String, Long>> counts = input
......
.returns(Types.TUPLE(Types.STRING, Types.LONG))
.keyBy(0)
.sum(1);
数据流计数=输入
......
.returns(Types.TUPLE(Types.STRING,Types.LONG))
.keyBy(0)
.总数(1);
我有点理解有时间窗的情况,对我来说就像一个“批次”,因为它有开始和结束时间,但当根本没有时间窗的时候
指定的程序将使用
sumgaggregator
转换为StreamGroupedReduce
。StreamGroupedReduce
将持续减少传入数据流,并在每个传入记录之后输出新的减少值
在内部,StreamGroupedReduce
使用保持当前reduce值的ValueState
。每当新记录到达时,当前的reduce值通过调用reduce函数
(在您的情况下是sumgaggregator
)与传入记录相结合。然后,此操作的结果存储在操作员的ValueState
中,并输出到下游消费者
例如:输入流1,2,3,4,5
在求和时将生成以下输出:1,3,5,9,14
如果需要,则可以使用
keyBy(0)实现相同的行为。进程(…)
指定的程序将转换为带有SumAggregator的StreamGroupedReduce
。StreamGroupedReduce
将持续减少传入数据流,并在每个传入记录之后输出新的减少值
在内部,StreamGroupedReduce
使用保持当前reduce值的ValueState
。每当新记录到达时,当前的reduce值通过调用reduce函数
(在您的情况下是sumgaggregator
)与传入记录相结合。然后,此操作的结果存储在操作员的ValueState
中,并输出到下游消费者
例如:输入流1,2,3,4,5
在求和时将生成以下输出:1,3,5,9,14
如果需要,您可以使用keyBy(0)实现相同的行为。process(…)
谢谢。所以,我觉得Flink通过使用ValueState保存了一个中间结果。谢谢。在我看来,Flink通过使用ValueState保存了一个中间结果。