起因:
ds创建seatunnel任务时,如果 engine = Flink,Run Mode默认为run,不能选择空值
此操作导致,在seatunnel调用Flink服务执行任务时,会在执行命令中默认拼接 --run-mode run,但是run-mode参数在多个flink版本(已测1.14 1.15 1.16 1.17)不支持,最后任务执行失败
Execute SeaTunnel Flink Job: ${FLINK_HOME}/bin/flink run --run-mode run -c org.apache.seatunnel.core.starter.flink.SeaTunnelFlink /opt/tools/seatunnel-incubating-2.3.1/starter/seatunnel-flink-15-starter.jar --config /tmp/dolphinscheduler/exec/process/tenant01/9109142885696/9218817470144_1/49/84/seatunnel_49_84.conf --name SeaTunnel
查看源码:
use-sea-tunnel.ts

SeatunnelFlinkTask.java
SeatunnelFlinkParameters.java
解决方案:
源码改造进行适配
1.页面新增none选项
2.后台新增None枚举
3.根据任务配置engine选项值判断是否装配默认参数
4.根据官方推荐,选择 3.1.5-release分支进行本地构建
./mvnw clean install -Prelease -Dmaven.test.skip -Dmaven.javadoc.skip -Dmaven.checkstyle.skip
5.构建成功后会在dist模块找到构建好的二进制压缩包
6.接下来二进制包进行解压部署,然后查看下seatunnel 任务创建页面,在Run Mode选项中显示有none
修改好配置后,重新执行原有工作流实
等待片刻,所有任务执行成功
我们在看下具体任务日志 ,在seatunnel命令中没发现run-mode参数,在flink命令中也没有run-mode参数
再从flink web dashboard查看flink job列表,Job Name也成功展示为代码改造中的名称,不再使用默认的seatunnel