是Flink KeyedStream sum()函数状态?



让我们写一个简单的wordcount作业

DataStream<Tuple2<String, Integer>> counts =
text.flatMap(new Tokenizer())
.keyBy(value -> value.f0)
.sum(1);

(来源和其他细节无关)假设进入管道的字符串

"the cat is on the table"

结果是:

<the - 1>
<cat - 1>
<is - 1>
<on - 1>
<the - 2>
<table - 1>

唯一出现两次的单词是" The "。似乎sum()函数是有状态的,至少维护最后一个元组更新时,一个新的元组<word,>到达(显然按词值划分)。
如果为true,并且启用了检查点,是否为"状态"?保存到检查点并在失败的情况下恢复?

是的。

源代码https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/aggregation/SumAggregator.java

使用AggregateFunction

https://nightlies.apache.org/flink/flink-docs-master/api/java/org/apache/flink/api/common/functions/AggregateFunction.html

是有状态的

相关内容

  • 没有找到相关文章

最新更新