溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

離線數(shù)據(jù)同步神器:DataX,支持幾乎所有異構(gòu)數(shù)據(jù)源的離線同步到MaxCompute

發(fā)布時(shí)間:2020-08-11 21:00:31 來源:ITPUB博客 閱讀:398 作者:許此一生 欄目:云計(jì)算
概述

DataX 是阿里巴巴集團(tuán)內(nèi)被廣泛使用的離線數(shù)據(jù)同步工具/平臺,實(shí)現(xiàn)包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構(gòu)數(shù)據(jù)源之間高效的數(shù)據(jù)同步功能。

DataX本身作為數(shù)據(jù)同步框架,將不同數(shù)據(jù)源的同步抽象為從源頭數(shù)據(jù)源讀取數(shù)據(jù)的Reader插件,以及向目標(biāo)端寫入數(shù)據(jù)的Writer插件,理論上DataX框架可以支持任意數(shù)據(jù)源類型的數(shù)據(jù)同步工作。同時(shí)DataX插件體系作為一套生態(tài)系統(tǒng), 每接入一套新數(shù)據(jù)源該新加入的數(shù)據(jù)源即可實(shí)現(xiàn)和現(xiàn)有的數(shù)據(jù)源互通。

離線數(shù)據(jù)同步在大數(shù)據(jù)分析,數(shù)據(jù)備份,數(shù)據(jù)同步等應(yīng)用場景中都會被用到,所以本文特別介紹阿里開源的這款神器:DataX!

準(zhǔn)備工作
  1. 環(huán)境準(zhǔn)備:Linux服務(wù)器一臺,安裝有JDK8,maven和python 2.6+;

  2. 下載源碼:https://github.com/alibaba/DataX.git

  3. 解壓后編譯源碼: mvn -U clean package assembly:assembly -Dmaven.test.skip=true

出現(xiàn)以下信息,表示編譯成功(編譯時(shí)間稍長,由于DataX支持的數(shù)據(jù)源很多,對應(yīng)的依賴包也比較多,所以可能需要20min左右編譯時(shí)間,具體視下載速度和機(jī)器性能而定):

離線數(shù)據(jù)同步神器:DataX,支持幾乎所有異構(gòu)數(shù)據(jù)源的離線同步到MaxComputecdn.com/fb3a20a220799ae3b890ea64cdd2f86d5cd2e430.png">

常見錯(cuò)誤:

  • 在第3步可能會出現(xiàn)無法編譯tablestore-streamclient的錯(cuò)誤,請到https://mvnrepository.com/artifact/com.aliyun.openservices/tablestore-streamclient/1.0.0 下載相應(yīng)的包并放到maven相應(yīng)路徑下;

工具使用

成功編譯DataX后,在 cd target/datax/datax/ 目錄下就會生成可執(zhí)行文件,我們就可以來使用DataX同步各種格式的離線數(shù)據(jù)(具體看參考:https://github.com/alibaba/DataX/blob/master/userGuid.md),如下:

離線數(shù)據(jù)同步神器:DataX,支持幾乎所有異構(gòu)數(shù)據(jù)源的離線同步到MaxCompute

不在這個(gè)表格中的數(shù)據(jù)源格式你可以通過自定義插件編寫,具體編碼可參考:https://github.com/alibaba/DataX/blob/master/dataxPluginDev.md

比如我們實(shí)現(xiàn)一個(gè)最簡單的任務(wù),將JSON格式化數(shù)據(jù)輸出到控制臺:

  1. 切換目錄: cd target/datax/datax/bin ,比如在我們的192.168.1.63的服務(wù)器,切換到目錄: /home/data-transfer/datax/target/datax/datax/bin

  2. 查看配置格式命令: python datax.py -r streamreader -w streamwriter

  3. 編寫配置文件,stream2stream.json文件如下:



 1

{

2    "job" : {
3      "content" : [
4       {
5          "reader" : {
6            "name" "streamreader" ,
7            "parameter" : {
8              "sliceRecordCount" 10 ,
9              "column" : [
10               {
11                  "type" "long" ,
12                  "value" "10"
13               },
14               {
15                  "type" "string" ,
16                  "value" "hello,你好,世界-DataX"
17               }
18             ]
19           }
20         },
21          "writer" : {
22            "name" "streamwriter" ,
23            "parameter" : {
24              "encoding" "UTF-8" ,
25              "print" true
26           }
27         }
28       }
29     ],
30      "setting" : {
31        "speed" : {
32          "channel" 5
33        }
34     }
35   }
36 }
  1. 運(yùn)行腳本: python datax.py ./stream2stream.json ,執(zhí)行后控制臺輸出: 離線數(shù)據(jù)同步神器:DataX,支持幾乎所有異構(gòu)數(shù)據(jù)源的離線同步到MaxCompute

再比如mysql到mysql的離線數(shù)據(jù)同步,可使用:
python datax.py -r mysqlreader -w mysqlwriter  獲取配置文件模板;

更多的writer可參看plugins目錄下的writer文件夾 (官方默認(rèn)包含的Writer,支持自定義可擴(kuò)展)

離線數(shù)據(jù)同步神器:DataX,支持幾乎所有異構(gòu)數(shù)據(jù)源的離線同步到MaxCompute

更多的reader可參看 plugins目錄下的reader文件夾 (官方默認(rèn)包含的Reader,支持自定義可擴(kuò)展):

離線數(shù)據(jù)同步神器:DataX,支持幾乎所有異構(gòu)數(shù)據(jù)源的離線同步到MaxCompute


注:如果要使用離線增量同步數(shù)據(jù),可指定配置文件中的where過濾;


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI