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 開始 。