全部產品
Search
文件中心

DataWorks:匯出開源引擎任務

更新時間:Jun 19, 2024

DataWorks提供任務搬站功能,支援將Oozie、Azkaban、Airflow、DolphinScheduler等開源調度引擎的任務快速遷移至DataWorks。本文為您介紹匯出任務的檔案要求等相關資訊。

背景資訊

您需要先匯出開源調度引擎的任務至本地或OSS,再匯入至DataWorks。匯入的詳情請參見匯入開源引擎任務

使用限制

匯出Airflow任務僅支援Airflow 1.10.x,且依賴Python 3.6及以上版本。

匯出Oozie任務

匯出要求

匯出的檔案需包含XML和配置項等資訊,匯出後即為一個Zip格式檔案。

匯出結構

Oozie的任務描述在HDFS的某個Path下。以Oozie官方的Examples為例,Examples包中的apps目錄下,每個子目錄都是一個Oozie的Workflow Job。該子目錄包含Workflow的定義XML和配置項等資訊。匯出檔案的結構如下。目錄結構

匯出Azkaban任務

下載工作流程

Azkaban擁有自己的Web控制台,支援在介面下載某個工作流程(Flow)。

  1. 登入Azkaban控制台的Projects頁面。

  2. 進入相應的Project頁面,單擊Flows,為您展示該Project下所有的工作流程。

  3. 單擊頁面右上方的Download,下載Project的匯出檔案。

    downloadAzkaban匯出包的格式無特別限制,是原生Azkaban即可。匯出的Zip檔案包含Azkaban的某個Project下所有任務(Job)及其關係的資訊。Azkaban頁面匯出的Zip檔案可直接在調度引擎作業匯入頁面上傳匯入。

轉換邏輯

Azkaban與DataWorks轉換項的對應關係及邏輯說明如下。

Azkaban轉換項

DataWorks轉換項

說明

Flow

資料開發(DataStudio)的商務程序

Flow裡的Job作為節點會放至Flow對應的商務程序目錄下。

嵌套Flow的內部Flow也會單獨轉換為一個商務程序,通過Flow轉換後的商務程序會自動建立節點間的依賴關係。

Command類型的Job

Shell節點

若使用DataWorks on EMR模式,則轉換為EMR SHELL節點。可在匯入任務的進階設定進行配置。

若Command命令列調用其他指令碼,會自動分析具體是哪個指令檔。分析到的指令檔會註冊為DataWorks的資源檔,轉換後的Shell代碼裡會引用該資源檔。

Hive類型的Job

EMR_HIVE節點

若使用DataWorks on MaxCompute模式,則轉換為ODPS SQL節點。可在匯入任務的進階設定進行配置。

其他DataWorks不支援的節點

虛擬節點或Shell節點

可在匯入任務的進階設定進行配置。

進階設定

匯出Airflow任務

操作步驟

  1. 進入Airflow的執行環境。

  2. 使用Airflow的Python庫,載入在Airflow上調度的Dag Folder。Dag Folder為您的Dag Python檔案所在的目錄。

  3. 使用匯出工具,在記憶體中通過Airflow的Python庫讀取Dag Python檔案的內部任務資訊及其依賴關係,將產生的Dag資訊寫入JSON檔案進行匯出。

    您可進入DataWorks的遷移助手 > 任務上雲 > 調度引擎作業匯出頁面,下載匯出工具。進入調度引擎作業匯出的步驟請參考進入引擎作業匯出

工具操作說明

匯出工具操作說明如下:

  1. 使用如下語句解壓airflow-exporter.tgz。

    tar zxvf airflow-exporter.tgz
  2. 設定PYTHONPATH為Airflow的Python lib目錄。樣本語句如下。

    export PYTHONPATH=/usr/local/lib/python3.6/site-packages
  3. 匯出Airflow任務。樣本語句如下。

    cd airflow-exporter
    python3.6 ./parser -d /path/to/airflow/dag/floder/ -o output.json
  4. 使用如下語句,將匯出的output.json檔案產生Zip檔案。

    zip out.zip output.json

Zip檔案產生後,您可進入DataWorks遷移助手 > 任務上雲 > 調度引擎作業匯入頁面匯入任務,詳情請參見匯入開源引擎任務

匯出DolphinScheduler任務

原理介紹

DataWorks匯出工具通過調用DolphinScheduler的大量匯出工作流程來定義API資訊,擷取DolphinScheduler工作流程定義的JSON配置,產生一個Zip格式的檔案。後續可在遷移助手 > 任務上雲調度引擎作業匯入頁面,建立DolphinScheduler類型的匯入任務,匯入Zip檔案並進行解析和轉換,將DolphinScheduler工作流程工作的代碼、依賴關係轉換為合適的DataWorks任務檔案配置。

使用限制

  • 版本限制:僅支援使用1.3.x版本的DolphinScheduler匯出DolphinScheduler任務。

  • 轉換限制

    • SQL任務:僅支援轉換部分引擎的SQL節點,具體請以實際使用為準。並且轉換過程中SQL代碼不做文法轉換、不進行修改。

    • Cron運算式:部分情境存在運算式剪裁或運算式功能不支援等情況,您需自行檢查調度配置的定時時間是否滿足要求。調度時間介紹,詳情請參見時間屬性配置說明

    • Python節點:DataWorks沒有單獨的Python節點,Python節點目前是轉換為Python檔案資源和一個調用該Python資源的Shell節點,調度參數傳遞可能存在問題,您需自行調試檢查。調度參數介紹,詳情請參見調度參數配置

    • Depend節點:暫不支援轉換跨周期依賴。定義的相依性屬性轉換為DataWorks同周期調度依賴的本節點輸入、本節點輸出。同周期依賴配置,詳情請參見配置同周期調度依賴

轉換邏輯說明

DolphinScheduler與DataWorks轉換項的對應關係及邏輯說明如下。

DolphinScheduler轉換項

DataWorks轉換項

說明

工作流程定義(Process)

商務程序

工作流程內部的節點轉換為DataWorks商務程序中的節點。同時,轉換為商務程序後,會自動添加Start和End虛擬節點,作為商務程序內子節點的起始和結束節點。

SubProcess節點

虛擬節點

  • SubProcess節點所在的Process中,轉換為DataWorks商務程序時會自動添加Start和End虛擬節點,作為SubProcess的起始和結束節點。

  • SubProcess節點本身轉換為DataWorks的虛擬節點,Start節點會依賴該虛擬節點,原先SubProcess節點的下遊節點均依賴End節點。

SubProcess轉換邏輯

Conditions節點

歸併節點

Conditions節點的依賴配置中,每一個依賴項和條件關係會轉換為DataWorks的一個歸併節點(Join)及相關邏輯。Conditions節點依賴配置的最外層邏輯關係會使用兩個歸併節點(Join)來判斷是採用Success還是Failure路徑處理。

說明

Conditions依賴配置的跨周期依賴暫不支援轉換。若存在跨周期依賴,則會將其轉換為DataWorks的同周期依賴關係。

Conditions節點轉換邏輯

Depend節點

虛擬節點

Depend節點的依賴關係會轉換為虛擬節點調度配置中的本節點輸入。本節點輸入的拼接規則如下:

{current_dataworks_project_name}.{dolphin_project_name}.{dolphin_process_name}.{dolphin_task_name}

SQL Task

目前支援映射為如下引擎的SQL類型節點:

  • HIVE

  • SPARK

  • CLICKHOUSE

  • POSTGRESQL

具體映射為哪種引擎節點,可在匯入任務的進階設定進行配置。

說明

SQL代碼不做文法轉換、不進行修改。

Python節點

Python檔案資源與調用該資源的Shell節點。

該過程調度參數傳遞可能會存在問題,您需自行調試檢查。調度參數介紹,詳情請參見調度參數配置

MR

具體映射為哪種引擎節點,可在匯入任務的進階設定進行配置。

Spark

具體映射為哪種引擎節點,可在匯入任務的進階設定進行配置。

Sqoop

指令碼模式的Data Integration離線同步任務。

同步任務的來源和去向資料來源,請以實際使用為準。指令碼模式同步任務配置詳情,請參見通過指令碼模式配置離線同步任務

其他DataWorks不支援的節點

虛擬節點

環境準備

  • 下載工具

  • 依賴設定:您需使用1.8及以上JDK版本;2.7及以上Python版本。

匯出操作

  1. 解壓匯出工具。

    使用如下語句解壓匯出工具。

    $ tar xzvf migrationx-reader.zip
    $ cd migrationx-reader/
  2. 建立DolphinScheduler生產API的調用令牌。

    建立詳情,請參見DolphinScheduler協助文檔

  3. 匯出檔案。

    執行如下命令匯出所需檔案。

    $ python ./bin/reader.py -a dolphinscheduler -e http://dolphinschedulerhost:port -t token -v 1.3.9 -p project_name -f ds_dump.zip

Zip檔案匯出後,您可在遷移助手 > 任務上雲調度引擎作業匯入頁面,建立DolphinScheduler類型的匯入任務,匯入Zip檔案並進行解析和轉換,將DolphinScheduler工作流程工作的代碼、依賴關係轉換為合適的DataWorks任務檔案配置,完成任務上雲。

匯出其它開源引擎任務

DataWorks為您提供標準模板便於匯出除Oozie、Azkaban、Airflow、DolphinScheduler外的開源引擎任務。匯出任務前,您需要下載標準格式模板並參考模板的檔案結構修改內容。下載模板及目錄結構的介紹請進入開源引擎匯出頁面進行查詢:

  1. 登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 單擊左上方的表徵圖表徵圖,選擇全部產品 > 更多 > 遷移助手

  3. 在左側導覽列,單擊任務上雲 > 調度引擎作業匯出,進入調度引擎匯出方案選擇頁面。

  4. 單擊標準模板

  5. 標準模板頁簽下,單擊標準格式模板進行下載。

  6. 根據模板中的格式修改內容後,即可產生匯出包。