开发者社区> 问答> 正文

reduce函数的trigger问题

您好!最近刚开始学习flink,问一个关于trigger的问题:

如下的reduce操作: env.socketTextStream("localhost", 9999) .flatMap(new Splitter()) .keyBy(value -> value.f0) .window(TumblingEventTimeWindows.of(Time.seconds(15))) .reduce(new ReduceFunction<Tuple2<String, Integer>>() { @Override public Tuple2<String, Integer> reduce(Tuple2<String, Integer> value1, Tuple2<String, Integer> value2) throws Exception { return new Tuple2<>(value1.f0, value1.f1 + value2.f1); } });

使用的trigger是: @Override public Trigger<Object, TimeWindow> getDefaultTrigger(StreamExecutionEnvironment env) { return EventTimeTrigger.create(); }

然后的EventTimeTrigger实现是当watermark漫过当前window之后才触发的,我的疑问是reduce函数不是增量做计算的吗?如果等到watermark漫过当前window之后才触发计算,那岂不是要缓着所有的记录? 多谢指导!*来自志愿者整理的flink邮件归档

展开
收起
JACKJACK 2021-12-08 11:01:54 516 0
1 条回答
写回答
取消 提交回答
  • 对的是我!

    此处的trigger你可以理解成是计算结果的输出时机,你的reduce计算还是增量的哈。*来自志愿者整理的flink邮件归档

    2021-12-08 11:13:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Lazy Join Optimizations Without Upfront Statistics 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载