Flink 能数到零吗?
Can Flink count to zero?
我在 Flink SQL 中找到了计数的示例,但是我似乎无法计数到零。
最明显的用例是监控,如果未收到更新,则需要采取行动。
这是我到目前为止尝试过的方法:
select count(*) from emptysource
GROUP BY TUMBLE(PROCTIME(), INTERVAL '1' second)
从未收到任何消息的主题末尾开始计数时,计数不显示为零。事实上,这项工作似乎没有产生任何结果,尽管它 运行 成功了。
我没有尝试过更复杂的设置,我们会按键计算。
我主要对 Flink SQL 感兴趣,但如果需要 Flink 中的其他解决方案,那也很好。
我认为问题是Flink目前不支持没有元素的windows,所以Flink基本上只有在这个window的第一个元素到达后才会创建一个window .可以找到一些额外的信息,虽然答案是事件时间,但处理时间的规则基本相同。
可能的解决方法取决于确切的用例,但通常可能类似于:
- 使用键控计时器发出周期性聚合(这仅在至少有一条消息到达键时有效)
- 仅使用虚拟源以便正确创建 windows(如所述 here)
我在 Flink SQL 中找到了计数的示例,但是我似乎无法计数到零。
最明显的用例是监控,如果未收到更新,则需要采取行动。
这是我到目前为止尝试过的方法:
select count(*) from emptysource
GROUP BY TUMBLE(PROCTIME(), INTERVAL '1' second)
从未收到任何消息的主题末尾开始计数时,计数不显示为零。事实上,这项工作似乎没有产生任何结果,尽管它 运行 成功了。
我没有尝试过更复杂的设置,我们会按键计算。
我主要对 Flink SQL 感兴趣,但如果需要 Flink 中的其他解决方案,那也很好。
我认为问题是Flink目前不支持没有元素的windows,所以Flink基本上只有在这个window的第一个元素到达后才会创建一个window .可以找到一些额外的信息
可能的解决方法取决于确切的用例,但通常可能类似于:
- 使用键控计时器发出周期性聚合(这仅在至少有一条消息到达键时有效)
- 仅使用虚拟源以便正确创建 windows(如所述 here)