【发布时间】:2018-09-01 17:13:55
【问题描述】:
使用流 API,我可以编写一个 RichCoFlatMapFunction 接受控制流和数据流,控制流包含用于启动或停止或更改计算参数的元素,我知道我可以将当前控制设置存储在状态,并在处理数据流时检查值。
但是用 Flink SQL 做类似事情的方法是什么? 我无法将 join 用作数据流,并且控制流无法连接在一起。
我们提出的解决方案是通过应用程序本身存储控制设置。 这个想法是:
将控制流广播到 map 操作符,并将控制设置存储到其 map() 方法中的 java 单例对象中,因为 map 操作符将以默认并行度运行, 我们假设它将在该作业的所有 JVM 上运行,因此我们确保每个 JVM 都会初始化并不断更新单例对象中的控制设置。
使用 SQL,对于每个 UDAF 或 UDF,我们可以通过访问 java 单例对象来访问控制设置。
但我不确定我的假设是否正确,这是一个可行的解决方案。
【问题讨论】:
标签: apache-flink flink-streaming flink-sql