天天看點

DataX插件編寫指南簡介建立子產品配置開發測試

datax 是阿裡巴巴集團内被廣泛使用的離線資料同步工具/平台,實作包括 mysql、oracle、hdfs、hive、oceanbase、hbase、ots、odps 等各種異構資料源之間高效的資料同步功能。datax采用了架構

+ 插件 的模式,目前已開源,代碼托管在github。

代碼托管位址:

https://github.com/alibaba/datax

插件的開發可以參考:

https://github.com/alibaba/datax/wiki/datax%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91%e5%ae%9d%e5%85%b8

下面是參考《datax插件開發寶典》,進行插件開發的一個完整的流程。

首先從 https://github.com/alibaba/datax 克隆代碼,然後執行如下指令:

這個指令會生成datax.tar.gz,我們可以将生成的檔案部署到相應的環境,進行資料的導入導出。

後續,開發測試之後,可以使用上面的指令,将我們自己開發的插件內建到datax中。

然後将代碼導入到eclispe(或者其它ide)中,然後在這個項目下建立一個maven子產品。

接着做一些配置,配置之後就可以進行開發了

datax使用maven工具來管理項目,插件和架構使用多子產品的方式組織在一起。使用maven-assembly-plugin将所有的子產品打包在一起。

在開發的過程中,需要進行兩方面的配置

插件子產品本身的配置:目錄和檔案要滿足約定

datax主子產品的配置:需要配置2個檔案:./pom.xml和./package.xml

建立一個插件子產品之後,源代碼的結果應該滿足如下結構:

DataX插件編寫指南簡介建立子產品配置開發測試

pom的配置:

這裡要注意的是,

1 增加了對datax-common的依賴,這個依賴是datax的架構,

2 配置了maven-assembly-plugin,在這裡應用了src/main/assembly/package.xml。package.xml定義了打包之後的目錄結構,這個目錄結果是datax約定好的。具體如下:

除了上面的兩個xml檔案,還需要兩個json檔案

plugin.json是對插件本省的描述,在架構根據這個檔案來加載插件,例如:

plugin_job_template.json:插件的配置子產品,使用者在使用插件是,根據這個模版來進行配置。例如:

pom.xml 中添加本插件的子產品名稱

子產品名稱artifactid

package.xml 中添加本插件的打包内容,以讓 datax 能夠把該插件納入整個插件體系。

主要參考《datax插件開發寶典》,這裡面講的比較詳細。

下面是插件如何通過<code>recordsender</code>往<code>channel</code>寫入資料的僞代碼:

開發完成之後,可以通過執行指令:

來生成datax,然後進行測試。

因為每次執行這條指令,會把datax中所有的插件重新編譯和打包,速度會比較慢。是以,可以修改datax中的pom.xml和package.xml,子產品隻保留common和正在開發中的插件。