开发者社区> 问答> 正文

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任务的重启?

谢谢!*来自志愿者整理的flink邮件归档

展开
收起
毛毛虫雨 2021-12-07 12:47:58 1617 0
1 条回答
写回答
取消 提交回答
  • Mailing List 是不能发图的 热部署是不可能热部署的,这辈子不可能热部署。 要是动态修改配置,DAG又不会改。 只有修改修改配置文件和代码,然后重新Deploy才能维持得了新业务这样子……

    我们现在的解决方法是,启动的时候从Consul KV 动态读取 Table 的一些配置。 以Sink为例,你需要定义表结构(字段和类型,以及表名),还需要定义Append和Retract的时候做什么操作。 以Source为例的话,你要定义来源数据格式,和如何生成指定的表。 如果有套路的话(比如都是JSON类型的Source或者写入JDBC的Sink),可以做到修改配置,重启就生效。

    但是热部署是不可能热部署的,要不然DAG的生成怎么办……*来自志愿者整理的flink

    2021-12-07 15:28:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载