DophineSheduler上下游任务之间动态传参案例及易错点总结( 二 )

DophineSheduler上下游任务之间动态传参案例及易错点总结
文章插图

DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
? 查看test2的日志并未有任何执行结果打印出
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
? 根据上面的猜测,由于在使用的时候我们整体上加了单引号,又根据shell语法的经验,所以笔者决定在引用变量的时候再加单引号试试,也就是如下形式:echo '${setValue(key='$value')}'
我们来继续实验:【DophineSheduler上下游任务之间动态传参案例及易错点总结】value=https://www.huyubaike.com/biancheng/`date`echo $valueecho"-------------start-----------"echo '${setValue(key='$value')}'echo "-------------end----------------"
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
?查看任务2的执行结果日志: 
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
? 我们看到出现了最终想要的执行结果日志,也就是说想要动态传参必须采用如下模式才能成功~ echo '${setValue(key='$value')}'
注意:在海豚调度器在 3.0.0-beta-1 版本后修复了这一问题,可以更好的支持动态传参问题,比如动态地获取现有的本地或 HTTP 资源并获取设定变量 。 具体使用方法如下:lines_num=$(wget https://raw.githubusercontent.com/apache/dolphinscheduler/dev/README.md -q -O - | wc -l | xargs)echo "#{setValue(set_val_var=${lines_num})}"
 
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
? 总体传参串联任务案例第一步:设置任务输出参数
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
? 第二步:获取第一步参数并打印输出,且继续传参
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
? 第三步:使用SQL语句获取第一步传递的参数  , 并把结果传递给下游 。
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
? 引用参数时候 , 直接引用自定义输出参数的 Key 就可以了,比如本案例的 output ,一般采用${output}的形式,具体如下图所示: 
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
?第四步:获取第三步的执行结果参数 , 并将结果输出~ 
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
?【注意点】如果是sql任务:sql结尾不要有分号(;)否则会报错 。 整体流程如下图所示
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
?查看最终(邮件结果)如下: 
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
 任务4日志信息:可以看到已生成结果信息 
DophineSheduler上下游任务之间动态传参案例及易错点总结

文章插图
?小结本文总结了DophineSheduler上下游任务之间参数传递的方法 , 并对其中的易错点进行了梳理,同时给出了具体参数传递的案例,读者可自行进行摸索 。 其中易错点归纳如下:(1)参数输出时方向选择为 out(2)sql任务时参数的 key 值一定和 sql 语句中的字段名保持一致 , 否则不识别(3)输出的value值不需要填写(4)shell任务时,具体参考如下模板 , 模板中注意引号的使用echo '${setValue(key='$value')}'注意此处等号左边的 key 需要和自定义输出的参数key 名字一致
(5)sql任务中结尾不要有分号(6)引用参数时只需要采用${key}即可 最后,如果对这个话题感兴趣的话,可以进群一起交流沟通,谢谢大家~最后非常欢迎大家加入 DolphinScheduler 大家庭,融入开源世界!我们鼓励任何形式的参与社区,最终成为 Committer 或 PPMC , 如:
  • 将遇到的问题通过 GitHub 上 issue 的形式反馈出来 。
  • 回答别人遇到的 issue 问题 。
  • 帮助完善文档 。
  • 帮助项目增加测试用例 。
  • 为代码添加注释 。
  • 提交修复 Bug 或者 Feature 的 PR 。
  • 发表应用案例实践、调度流程分析或者与调度相关的技术文章 。
  • 帮助推广 DolphinScheduler,参与技术大会或者 meetup 的分享等 。
欢迎加入贡献的队伍 , 加入开源从提交第一个 PR 开始 。