離線數據同步神器:DataX,支持幾乎全部異構數據源的離線同步到MaxCompute

概述

DataX 是阿里巴巴集團內被普遍使用的離線數據同步工具/平臺,實現包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各類異構數據源之間高效的數據同步功能。python

DataX自己做爲數據同步框架,將不一樣數據源的同步抽象爲從源頭數據源讀取數據的Reader插件,以及向目標端寫入數據的Writer插件,理論上DataX框架能夠支持任意數據源類型的數據同步工做。同時DataX插件體系做爲一套生態系統, 每接入一套新數據源該新加入的數據源便可實現和現有的數據源互通。mysql

離線數據同步在大數據分析,數據備份,數據同步等應用場景中都會被用到,因此本文特別介紹阿里開源的這款神器:DataX!git

準備工做

  1. 環境準備:Linux服務器一臺,安裝有JDK8,maven和python 2.6+;github

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

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

出現如下信息,表示編譯成功(編譯時間稍長,因爲DataX支持的數據源不少,對應的依賴包也比較多,因此可能須要20min左右編譯時間,具體視下載速度和機器性能而定):bash

fb3a20a220799ae3b890ea64cdd2f86d5cd2e430

常見錯誤:服務器

  • 在第3步可能會出現沒法編譯tablestore-streamclient的錯誤,請到https://mvnrepository.com/artifact/com.aliyun.openservices/tablestore-streamclient/1.0.0 下載相應的包並放到maven相應路徑下;框架

工具使用

成功編譯DataX後,在cd target/datax/datax/目錄下就會生成可執行文件,咱們就能夠來使用DataX同步各類格式的離線數據(具體看參考:https://github.com/alibaba/DataX/blob/master/userGuid.md),以下:maven

53a3f40cd498be6ac0825de03e1ed70815a36cf8

不在這個表格中的數據源格式你能夠經過自定義插件編寫,具體編碼可參考:https://github.com/alibaba/DataX/blob/master/dataxPluginDev.md

好比咱們實現一個最簡單的任務,將JSON格式化數據輸出到控制檯:

  1. 切換目錄:cd target/datax/datax/bin,好比在咱們的192.168.1.63的服務器,切換到目錄:/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": true26          }27        }28      }29    ],30    "setting": {31      "speed": {32        "channel": 533       }34    }35  }36}複製代碼
  1. 運行腳本:python datax.py ./stream2stream.json,執行後控制檯輸出:038be265e5cb239b0be5f6e6f31c7295550d1021

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

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

95185e59281f49e696c40cdffb235d7ac88430b5

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

9f9ed3e3b0ed82de488fd772b3a40c55de1e2094


注:若是要使用離線增量同步數據,可指定配置文件中的where過濾;

相關文章
相關標籤/搜索