天天看點

dolphinscheduler海豚排程器參數優先級

DolphinScheduler 中所涉及的參數值的定義可能來自三種類型:

  • 全局參數:在工作流儲存頁面定義時定義的變量
  • 上遊任務傳遞的參數:上遊任務傳遞過來的參數
  • 本地參數:節點的自有變量,使用者在“自定義參數”定義的變量,并且使用者可以在工作流定義時定義該部分變量的值

因為參數的值存在多個來源,當參數名相同時,就需要會存在參數優先級的問題。DolphinScheduler 參數的優先級從高到低為:本地參數 > 上遊任務傳遞的參數 > 全局參數

在上遊任務傳遞的參數中,由于上遊可能存在多個任務向下遊傳遞參數,當上遊傳遞的參數名稱相同時:

  • 下遊節點會優先使用值為非空的參數
  • 如果存在多個值為非空的參數,則按照上遊任務的完成時間排序,選擇完成時間最早的上遊任務對應的參數

例子

下面例子向你展示如何使用任務參數傳遞的優先級問題

1:先以 shell 節點解釋第一種情況

dolphinscheduler海豚排程器參數優先級

節點 【useParam】可以使用到節點【createParam】中設定的變量。而節點 【useParam】與節點【noUseParam】中并沒有依賴關系,是以并不會擷取到節點【noUseParam】的變量。上圖中隻是以 shell 節點作為例子,其他類型節點具有相同的使用規則。

dolphinscheduler海豚排程器參數優先級

其中節點【createParam】在使用變量時直接使用即可。另外該節點設定了 "key" 和 "key1" 兩個變量,這裡使用者用定義了一個與上遊節點傳遞的變量名相同的變量 key1,并且指派為 "12",但是由于我們設定的優先級的關系,這裡的值 "12" 會被使用,最終上遊節點設定的變量值會被抛棄。

2:我們再以 sql 節點來解釋另外一種情況

dolphinscheduler海豚排程器參數優先級

節點【use_create】的定義如下:

dolphinscheduler海豚排程器參數優先級

"status" 是目前節點設定的節點的自有變量。但是使用者在儲存工作流時也同樣設定了 "status" 變量(全局參數),并且指派為 -1。那在該 SQL 執行時,status 的值為優先級更高的 2。抛棄了全局變量中的值。

這裡的 "id" 是上遊節點設定的變量,使用者在節點【createParam1】、節點【createParam2】中設定了相同參數名 "id" 的參數。而節點【use_create】中使用了最先結束的【createParam1】的值。

繼續閱讀