You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 罗学焕/予之 <xu...@dtwave-inc.com> on 2019/03/13 03:13:34 UTC
flink任务 动态更新(热部署) 问题请教
Hi,大家好。
我这里有个Flink的问题想请教一下大家:
场景如下:
使用Oracle 的Ogg同步工具,将Oracle 4个表的操作记录,同步到Kafka中。
同步到Kafka时数据为Json格式,且存放在一个Topic中。
Flink 会从Kafka 中读取了这个Topic ,并根据Json结构中的table字段,将此Topic 注册成多个流。
利用利用Flink的分流,将此Topic,注册成A、B、C 三个流。
之后,将A、B、C 三个流 做Join操作,并将结果结果输出。(如图,左侧)
---
此时,由于业务新增了一个表,又往Kafka的Topic中新同步了一个表 。
此时要进行解析表D ,并注册成表,一共有4个流。
要做互相Join 。并输出结果。(如图、右侧)
示意图如下:
在修改代码逻辑,并重新打包部署的情况下,是可以解决的。
- -
请问,可以在【Flink任务不停机重启】的情况下, 读取外部配置,
新增一个流的分流解析,并动态修改处理的SQL,
做到修改Flink的执行计划,并按照新的业务逻辑继续运行吗? 还是说不可避免的一定要进行Flink任务的重启?
谢谢!
Re:flink任务 动态更新(热部署) 问题请教
Posted by TsingJyujing <ts...@163.com>.
Mailing List 是不能发图的
热部署是不可能热部署的,这辈子不可能热部署。
要是动态修改配置,DAG又不会改。
只有修改修改配置文件和代码,然后重新Deploy才能维持得了新业务这样子……
我们现在的解决方法是,启动的时候从Consul KV 动态读取 Table 的一些配置。
以Sink为例,你需要定义表结构(字段和类型,以及表名),还需要定义Append和Retract的时候做什么操作。
以Source为例的话,你要定义来源数据格式,和如何生成指定的表。
如果有套路的话(比如都是JSON类型的Source或者写入JDBC的Sink),可以做到修改配置,重启就生效。
但是热部署是不可能热部署的,要不然DAG的生成怎么办……
在 2019-03-13 11:13:34,"罗学焕/予之" <xu...@dtwave-inc.com> 写道:
Hi,大家好。
我这里有个Flink的问题想请教一下大家:
场景如下:
使用Oracle 的Ogg同步工具,将Oracle 4个表的操作记录,同步到Kafka中。
同步到Kafka时数据为Json格式,且存放在一个Topic中。
Flink 会从Kafka 中读取了这个Topic ,并根据Json结构中的table字段,将此Topic 注册成多个流。
利用利用Flink的分流,将此Topic,注册成A、B、C 三个流。
之后,将A、B、C 三个流 做Join操作,并将结果结果输出。(如图,左侧)
---
此时,由于业务新增了一个表,又往Kafka的Topic中新同步了一个表 。
此时要进行解析表D ,并注册成表,一共有4个流。
要做互相Join 。并输出结果。(如图、右侧)
示意图如下:
在修改代码逻辑,并重新打包部署的情况下,是可以解决的。
- -
请问,可以在【Flink任务不停机重启】的情况下, 读取外部配置,
新增一个流的分流解析,并动态修改处理的SQL,
做到修改Flink的执行计划,并按照新的业务逻辑继续运行吗? 还是说不可避免的一定要进行Flink任务的重启?
谢谢!