【ETL工具】DataX + DataXWeb 初使用過程記錄

人间春风意發表於2024-09-02

ETL:將大量的原始資料,經過抽取(Extract)和清洗轉換(Transform)後,載入(Load)到目的端的過程,稱為ETL,實現這種過程的工具,也就是ETL工具

版本:DataX v202309 DataXWeb 2.1.3-alpha-release

DataX:阿里雲開源的一個異構資料來源離線同步工具

Github:https://github.com/alibaba/DataX

功能介紹文件:https://github.com/alibaba/DataX/blob/master/introduction.md

在使用者使用指南(https://github.com/alibaba/DataX/blob/master/userGuid.md)上雖然只寫了Linux系統,但實際部署Windows也可以

JDK版本使用1.8即可

Python如果環境的版本可以選擇的話,可以使用2.6或者2.7,我這邊使用的是3.12.5

Maven 3.x是編譯時需要的條件

一開始下載的是v202308版本,安裝包下載路徑:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz

因為要Python3.x,所以替換DataX /bin目錄下py檔案(替換的檔案在:DataXWeb:doc/datax-web/datax-python3/)

由於DataX對Mysql 只支援5.x,但是我這邊的Mysql DB是 8.x的

所以下載了v202309的原始碼,調整程式碼使其支援mysql 8.x

(修改程式碼的步驟:https://blog.csdn.net/weixin_41640312/article/details/132019719)

然後按照github中的步驟打包即可

問題:

打包過程中發現oceanbasev10writer報錯,專案的libs下缺少特定jar檔案,

解決:

去master分支找到了這個jar,下載後複製,即可打包成功(打包過程非常慢,不知道是不是網路的問題)

問題:

建立了Mysql 資料來源之間的遷移Job(文件中並沒有說mysql的限制版本,也就沒有想到支援的Mysql版本這麼低)

配置是正確的,但dataX一直報錯

解決:

去搜尋了一下,才發現版本限制,所以切換了版本

問題:

打包好最新版後,執行Mysql Job還是報錯(在有總bps限速條件下,單個channel的bps值不能為空,也不能為非正數)

解決:

在打包後的datax\conf\core.json 中core.transport.speed.byte由-1修改為2000000

DataXWeb:個人開發者自行開源的專案

Github:https://github.com/WeiYe-Jing/datax-web

眾所周知,DataX是使用Python命令列執行Job的Json檔案配置來同步資料來源,

所以使用DataXWeb來搭配使用

一開始使用的是DataXWeb v2.1.2版本,但是配置欄位對映方面有點不太容易理解,就換了2.1.3-alpha-release

1. 下載原始碼

2. 執行datax-admin&datax-executor(按需修改配置檔案)

配置檔案都有說明,按照說明配置DB,以及datax.py的路徑等即可。

相對來講新版的配置比舊版更容易理解,但是,頁面的資料不是很即使,操作時,還是需要重新整理,不知道以後會不會調整

至於DataX建立Job的步驟我就不提了,使用DataXWeb,可以很容易建立一個Job

其他:

附上DataX支援的資料來源(github上都有)

DataX的核心架構

Job透過源端切分策略,切分為多個Task,然後呼叫Schedule模組,根據配置的併發引數等,將Task劃分為TaskGroup(預設一個TaskGroup5個Task)

每一個Task中啟用一個執行緒,完成Reader->Channel->Writer流程

相關文章