Динамический SQL-запрос в Flink - PullRequest
0 голосов
/ 30 мая 2019

У меня есть запрос SQL, подобный этому

String ipdetailsSql = "select sid, _zpsbd6 as ip_address, ssresp, reason,  " +
        "SUM(CASE WHEN botcode='r1' THEN 1 ELSE 0 END ) as icf_count, " +
        "SUM(CASE WHEN botcode='r2' THEN 1 ELSE 0 END ) as dc_count, " +
        "SUM(CASE WHEN botcode='r5' THEN 1 ELSE 0 END ) as badua_count, " +
        "COUNT(*) as hits, TUMBLE_START(ts, INTERVAL '1' MINUTE) AS fseen " +
        "from sourceTopic   " +
        "GROUP BY TUMBLE(ts, INTERVAL '1' MINUTE), sid, _zpsbd6, ssresp, reason";

Исходя из пользовательского ввода, я хочу изменить botcode = 'r1' на данный ввод.Скажите botcode = 'r10' без перезапуска задания.Есть ли способ сделать это.Я на пороге 1.7, используя поток env.Я попытался настроить поток, чтобы прочитать входные данные.Но застрял на том, как изменить запрос на лету.Кто-нибудь может мне с этим помочь?Заранее спасибо

1 Ответ

1 голос
/ 31 мая 2019

Потоковый SQL-запрос - это не то, что выполняется один раз и выполняется, а скорее декларативное выражение непрерывного вычисления.Невозможно внести произвольные изменения в это вычисление, не запуская новое задание с новым запросом.

В простых случаях, однако, есть вещи, которые вы можете сделать.Вы можете подумать, может ли это сработать, чтобы объединить вашу исходную тему с другим потоком, который эффективно предоставляет некоторые параметры запроса.Или вы можете посчитать возможным вычислить все мыслимые желаемые результаты и затем выбрать фактически желаемые результаты вниз по течению.

...