Группировка таблиц KSQL только с одним выводом в течение заданного времени - PullRequest
0 голосов
/ 05 февраля 2019

Привет! Я создал поток со следующими значениями из темы:

"id VARCHAR, src_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_console_failure', тогда я получаю None постоянно, когда нет совпадения

И когда есть совпадение, то есть больше, чем 3 за 30 секунд, тогда это дает это значение.Но, скажем, если в течение 30 секунд будет 10 попыток, то потребитель получит 7 сообщений, каждое из которых будет отличаться по количеству от 4 до 10.

Я знаю, что могу справиться с этим в сценарии, избегая None и получая только большее количествов данное время.Но есть ли способ создать поток из вышеприведенной таблицы, который будет иметь только совпадающие сообщения с groupby в KSQL?

1 Ответ

0 голосов
/ 05 февраля 2019

В настоящее время это невозможно в KSQL, но есть запрос на улучшение, если вы хотите повысить / отследить его: https://github.com/confluentinc/ksql/issues/1030

На данный момент, по одному и тому же запросу, вы можете поэкспериментировать с cache.max.bytes.buffering и commit.interval.ms, чтобы варьировать частоту выделения агрегата.

...