大家好!
想问下,现在在用DataStream的api来统计每天的UV,代码如下,有2个使用问题:
1、在使用Tumbling窗口的时候,由于使用窗口跨度是1天(Time.days(1)),只有以一天结束的时候,才能输出一个uv值,
这样时间等待太长了,所以加了一个trigger,每来一条都触发一次窗口,不知道这样的用法没有问题。
2、还有想问下在窗口结束后,里面的state状态会自动释放吗?还是要自己手动设置TTL的。
DataStream<UvPer10Min> uvPer10MinDataStream = userBehaviorSource
.windowAll(TumblingProcessingTimeWindows.of(Time.days(1L)))
.trigger(CountTrigger.of(1L))
.evictor(CountEvictor.of(0L, true))
.process(new ProcessAllWindowFunction<UserBehavior, UvPer10Min, TimeWindow>() {
private transient MapState<String, String> userIdState;
private transient ValueState<Long> uvCountState;
*来自志愿者整理的flink邮件归档
我建议你用ContinuousEventTimeTrigger,可以在窗口范围内,连续触发。
你这个countTrigger,促发次数太多了,而且你后面是processWindowFunction,导致计算压力比较大。
建议你用aggregateWindowFuntion*来自志愿者整理的flink邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。