Flink可以计数为零吗



我在Flink SQL中找到了计数的例子,但我似乎无法计数到零。

显而易见的用例是监控,如果没有收到更新,就需要采取行动。

以下是我迄今为止尝试的内容:

select count(*) from emptysource
GROUP BY TUMBLE(PROCTIME(), INTERVAL '1' second)

从没有接收到任何消息的主题结尾开始计数时,计数不会显示为零。事实上,这个作业似乎没有产生任何结果,尽管它确实成功地运行了。

我还没有尝试过更复杂的设置,我们会按每个键计数。

我主要对Flink SQL感兴趣,但如果需要Flink中的另一个解决方案,也很高兴知道。

我认为问题是Flink目前不支持没有元素的窗口,所以Flink基本上只在这个窗口的第一个元素到达后才创建一个窗口。这里可以找到一些额外的信息,尽管答案是针对事件时间,但处理时间的规则基本相同。

可能的解决方案取决于具体的用例,但通常可以是这样的:

  • 使用键控计时器发出周期性聚合(只有当至少有一条消息到达键时,这才会起作用(
  • 使用伪源以便正确创建窗口(如本文所述(

相关内容

  • 没有找到相关文章