使用DataWorks調度DLA循環任務

DataWorks是阿里雲上的一款熱門產品,能夠爲用戶提供大數據開發調度服務。它支持了Data Lake Analytics(後文簡稱DLA)之後,DLA用戶能夠經過它進行定時任務調度,很是方便。本文將主要介紹如何使用DataWorks調度DLA的循環任務。sql

場景

使用DLA對歷史數據按天作清洗。數據清洗的SQL是固定的,只是每次執行的時候須要傳入不一樣的日期。數組

對於這個場景,咱們須要:運維

  1. 部署一個賦值節點。該節點負責輸出日期值,並做爲下游循環節點的輸入。
  2. 部署一個循環節點。該節點包含用來作數據清洗的一個或者一組SQL,其中關於日期取值是一個變量。每次循環輸入值由賦值節點提供。

DataWorks操做

步驟一:新建業務流程和節點

登陸DataWorks的控制檯,並建立一個業務流程或使用原有的業務流程。oop

在新建的業務流程下,建立一個賦值節點和一個循環節點。測試

步驟二:配置賦值節點

打開節點「日期集合」的編輯頁面。這裏咱們選擇SHELL語言,將要執行的日期值寫在一個數組裏。大數據

打開節點「日期集合」的調度配置頁面。
在這裏須要給賦值節點設置一個上游節點,這裏能夠設置爲當前工做空間的root。好比個人工做空間名字叫jinluo_poc,則該節點爲jinluo_poc_root。阿里雲

步驟三:配置循環節點

雙擊循環節點進入編輯頁面。能夠看到三個節點,分別是start, sql和end。這裏咱們須要新建一個DLA的任務節點,並把sql替換爲一個DLA的任務節點。spa

在調度配置頁面設置依賴關係和節點上下文。上游節點設置爲賦值節點「日期集合」,本節點的輸入爲賦值節點的輸出。
.net

設置DLA_SQL節點

選擇一個DLA的數據源,並填寫SQL。3d

這裏面的pure_date的值是從賦值節點讀入的。每次讀取賦值節點的輸出結果數組中的一個值。寫法是固定的,以下所示。

h.`pure_date`=${dag.input[${dag.offset}]}
  • dag.offset,這個是DataWorks系統的保留變量,表明每一次循環次數相對於第一次的偏移量。即第一次循環中offset爲0、第二次爲一、第三次爲2…第n次爲n-1
  • dag.input,這個變量是用戶配置的循環節點的上下文依賴。循環節點內部節點若是須要引用這個上下文依賴的值,能夠直接用的方式來引用,由於上文中配置的上下文依賴,所以可使用dag.$ctxKey的方式來引用,由於上文中配置的上下文依賴key爲input,所以可使用{dag.input}來引用這個值
  • :節點數據集初始化的輸出是一個表格,是能夠用偏移量的方式來獲取表格數據的某一行的。因爲每次循環中的值是從開始遞增的,因此最後出來的數據應該就是dag.input[$dag.offset]:節點數據集初始化的輸出是一個表格,DataWorks是能夠用偏移量的方式來獲取表格數據的某一行的。因爲每次循環中dag.offset的值是從0開始遞增的,因此最後echo出來的數據應該就是{dag.input[0]}、${dag.input[1]}以此類推達到遍歷數據集的效果

設置end節點

該節點的做用是控制循環的結束。
end節點的結束條件:是把dag.loopTimes進行比較,小於則輸出True繼續循環;不小於則輸出False退出循環。dag.input.length變量,標識上下文參數input數組的行數。是系統自動根據節點配置的上下文下發的變量。

if ${dag.loopTimes} < ${dag.input.length}:
 print True
else:
 print False

在調度配置頁面,須要設置上游節點。

設置完成,保存後,能夠看到循環節點變動爲

步驟四:發佈

目前在DataWorks的開發界面暫不支持循環節點的運行,須要提交後在運維中心測試運行。
分別點擊 「日期集合」和「數據清洗SQL」頁面上的「提交按鈕」進行提交。

在提交循環節點時,注意要勾選上全部的節點。

步驟五:運行

進入運維中心頁面,在週期任務的列表裏面能夠看到咱們剛剛提交的兩個做業。

右鍵「日期集合」 -> 補數據 -> 當前節點及下游節點 能夠手動執行該組任務。

提交後能夠看到每一個節點的運行狀態。


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索