Flink中的动态SQL查询

时间:2019-05-30 09:49:09

标签: apache-flink flink-streaming flink-sql

我有这样的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'而不重新启动作业。 有没有办法做到这一点。我在使用流环境的flink 1.7上。我尝试配置流读取输入。 但停留在如何动态更改查询。谁能帮我这个?预先感谢

1 个答案:

答案 0 :(得分:0)

流SQL查询不是一次执行就完成的事情,而是连续计算的声明性表达式。如果不通过新查询开始新工作,就无法对该计算进行任意更改。

在简单的情况下,您可以做一些事情。您可能会考虑将您的Sourcetopic与另一个有效提供某些查询参数的流结合使用是否可行。或者,您可能会发现可以负担所有可能的期望结果,然后选择下游实际期望的结果。