另外一个选择是flink on zeppelin,可以调用flink on zeppelin的rest api,把zeppelin当做是flink
job server, zeppelin天然支持flink 1.10之后的所有版本。钉钉群:32803524

casel.chen <casel_c...@126.com> 于2021年6月12日周六 下午5:56写道:

> 需求背景:
> 因为不同Flink版本SQL底层实现不相同,同一个带状态的Flink SQL作业目前跨版本升级社区还不支持。所以如果基于Flink
> SQL开发实时计算平台的话,平台需要支持不同Flink版本。早期的Flink SQL作业用的是1.11,最新的Flink
> SQL作业采用的是1.13开发的。
>
>
> 而让平台支持不同Flink版本,我能想到有三种实现方案:
>
>
> 1. 平台直接调用 flink run 或 flink run-application 提交作业
> 优点:实现简单,每个flink版本都会带这个shell脚本
>
> 缺点:受限于脚本提供的功能,像语法检查、格式化sql、获取sql执行计划及sql结构和血缘这些“高级”功能没有在官方脚本中提供(能否完善下呢?),如果要使用的话得自己扩展实现(同样需要自己维护多版本)
>
>
> 2. 平台调用 flink sql gateway 暴露的 restful api 提交作业
> 优点:实现简单,通过gateway屏蔽上层应用调用多版本flink api问题
> 缺点:需要额外扩展开发和部署gateway,目前暂不清楚社区对gateway的定位是什么?只是配合flink jdbc
> driver使用么?这两项目目前活跃度都不高
>
>
> 3. 需要维护多个平台版本,像 flink-sql-connector-hive 支持多版本hive那样
> 优点:现有平台就是基于特定版本flink api开发的,改动小,需要抽取公用接口
> 缺点:需要“复制”平台多份实现以支持不同flink版本,开发和维护量比较大
>
>
> 目前,我暂时prefer方案2,可能不对,也可能还有更优的我没想到,欢迎各位大佬们给点建议。
>
>

-- 
Best Regards

Jeff Zhang

回复