使用RestCloud ETL Shell元件實現定時排程DataX離線任務

RestCloud發表於2022-06-22

RestCloud ETL社群版是一款資料整合工具,提供視覺化多資料管道構建、資料來源管理、執行監控及許可權管理功能。

 

1.場景說明:

對於一些已經在使用阿里的離線資料同步工具DataX的使用者,想實現每天定時執行(或手動執行)job任務是非常困難的,都需要進入控制介面敲命令列,有沒有更簡單、快捷的方法呢?有!使用RestCloud ETL Shell元件構建流程,實現定時/手動執行任務。

 

2.整體流程圖:

3.實現步驟:

3.1建立一個流程,在指令碼執行元件分類中拉取一個執行Shell指令碼元件

3.2 配置Shell指令碼內容

這裡使用呼叫遠端伺服器的方式呼叫,填寫好遠端伺服器的IP、登入使用者ID、密碼以及需要執行的shell指令碼。

Shell指令碼這裡可以使用變數的方式,動態獲取到流程裡的資料或者是http請求傳進來的資料。

Shell指令碼示例程式碼如下:

============

#!/bin/bash

#!/usr/bin/env python

source /etc/profile

 

python /usr/wgx/datax/bin/datax.py -p "-DlastSuccessEndTime='2022-05-12 18:37:27'" \

/usr/wgx/datax/job/mysql-job3.json

============

 

DataX的Job示例程式碼如下:

3.3 配置斷言執行邏輯

執行的結果會存放到shellResult變數中,所以可以透過在流程線中獲取並進行判斷。

如果返回的是0代表成功,其他返回則不成功,不成功我們則可以實現傳送釘釘訊息的方式預警訊息。

成功的路由線配置

失敗的路由線配置

 

失敗後則透過釘釘訊息的方式傳送:

釘釘配置

這樣,整個流程就已經配置完成了。

3.4 配置定時排程

我們可以透過返回到流程介面,修改流程配置。

我們這裡使用 只有主伺服器可執行 即可。


執行方式:我們這裡選擇定時排程的方式執行
排程策略:根據自己的需求選擇排程的策略
任務排程模式:

任務佇列領取模式:表示將任務放到佇列中,由伺服器自由領取的方式執行

所有叢集伺服器均可同時執行:表示所有伺服器均執行
只有主伺服器可執行:適用於主伺服器效能比其他伺服器高時使用,或只有一臺伺服器 執行時使用

由排程伺服器統一排程:表示由系統的排程器統一排程

4.執行結果

我們可以手動執行並檢視排程記錄

 

具體的流程執行流程線可以點選圖形控制檢視

 

我們進入到datax可以檢視到執行產生的日誌檔案

當執行Shell失敗時,則傳送釘釘訊息

到這裡,完成了透過RestCloud ETL Shell元件實現遠端排程datax任務。

 


 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005218/viewspace-2902187/,如需轉載,請註明出處,否則將追究法律責任。

相關文章