ksql表group by在给定时间内只有一个输出

hec6srdp  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(479)

嗨,我创建了一个流,其中包含主题中的以下值,
“id varchar,src\u ip varchar,message varchar”
现在我需要查看失败的登录是否在给定时间内重复超过3次,然后发出警报。所以我创建了一个如下表,

CREATE TABLE  231_console_failure AS \
      SELECT src_ip, count(*) \ 
      FROM console_failure \
      WINDOW TUMBLING (SIZE 30 SECONDS) \
      WHERE message = 'failed_login' \
      GROUP BY src_ip \
      HAVING count(*) > 3;

现在,当我使用python脚本作为'231\u console\u failure'从主题中使用时,如果没有匹配项,则会连续得到一个none
当有一个匹配,即在30秒内超过3,则给出该值。但是假设30秒内有10次尝试,那么消费者将获取7条消息,每条消息的计数从4到10不等。
我知道我可以在脚本中通过避免“无”来处理这个问题,并且在给定的时间内只进行更高的计数。但是有没有办法从上面的表中创建一个流,它在ksql中只有与groupby匹配的消息?

jgwigjjp

jgwigjjp1#

这在ksql中目前是不可能的,但是如果您想升级/跟踪它,会打开一个增强请求:https://github.com/confluentinc/ksql/issues/1030
现在,根据相同的票,你可以尝试 cache.max.bytes.buffering 以及 commit.interval.ms 改变聚合的频率。

相关问题