1

我是 flink 新手,想了解如何使用 FLINK 运行我的用例:应用程序具有三个输入数据源 a) 历史数据 b) 从 kafka 获取所有实时事件 c) 获取将具有触发条件的控制事件

由于应用程序正在处理历史数据,所以我认为我将合并历史数据和实时数据,并在该流上创建一个表。

要触发事件,我们必须借助作为输入源且包含 where 子句的控制事件来编写 SQL 查询。

我的问题是构建 SQL 查询,因为数据在 Stream 中,当我执行类似的操作时

DataStream<ControlEvent> controlEvent
controlEvent.map(new FlatMapFunction(String, String)
{
   @override
   public String flatMap(String s, Collector<String> coll)
   {
     tableEnv.execute("select * from tableName");   /// throw serialization exception
   }
});

它不会引发序列化异常 Localexecutionenvironment

4

1 回答 1

0

Flink SQL(还)不支持这种动态查询注入。

更新:

鉴于您所说的关于您的要求 - 查询中的变化将受到限制 - 您可能会做的是使用 DataStream API 而不是 SQL 来实现它。这可能KeyedBroadcastProcessFunction会保持一些键控状态,您可以在查询/查询的更新中广播。

Fraud Detection Demo为例,了解如何使用 Flink 构建此类东西。

于 2020-07-01T17:43:12.363 回答