您好,登錄后才能下訂單哦!
DataX 是阿里巴巴集團內被廣泛使用的離線數據同步工具/平臺,實現包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構數據源之間高效的數據同步功能。
DataX本身作為數據同步框架,將不同數據源的同步抽象為從源頭數據源讀取數據的Reader插件,以及向目標端寫入數據的Writer插件,理論上DataX框架可以支持任意數據源類型的數據同步工作。同時DataX插件體系作為一套生態系統, 每接入一套新數據源該新加入的數據源即可實現和現有的數據源互通。
離線數據同步在大數據分析,數據備份,數據同步等應用場景中都會被用到,所以本文特別介紹阿里開源的這款神器:DataX!
環境準備:Linux服務器一臺,安裝有JDK8,maven和python 2.6+;
下載源碼:https://github.com/alibaba/DataX.git
解壓后編譯源碼:
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
出現以下信息,表示編譯成功(編譯時間稍長,由于DataX支持的數據源很多,對應的依賴包也比較多,所以可能需要20min左右編譯時間,具體視下載速度和機器性能而定):
cdn.com/fb3a20a220799ae3b890ea64cdd2f86d5cd2e430.png">
常見錯誤:
在第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),如下:
不在這個表格中的數據源格式你可以通過自定義插件編寫,具體編碼可參考:https://github.com/alibaba/DataX/blob/master/dataxPluginDev.md
比如我們實現一個最簡單的任務,將JSON格式化數據輸出到控制臺:
切換目錄:
cd target/datax/datax/bin
,比如在我們的192.168.1.63的服務器,切換到目錄:
/home/data-transfer/datax/target/datax/datax/bin
查看配置格式命令:
python datax.py -r streamreader -w streamwriter
編寫配置文件,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
}
運行腳本:
python datax.py ./stream2stream.json
,執行后控制臺輸出:
再比如mysql到mysql的離線數據同步,可使用:
python datax.py -r mysqlreader -w mysqlwriter
獲取配置文件模板;
更多的writer可參看plugins目錄下的writer文件夾 (官方默認包含的Writer,支持自定義可擴展) :
更多的reader可參看 plugins目錄下的reader文件夾 (官方默認包含的Reader,支持自定義可擴展):
注:如果要使用離線增量同步數據,可指定配置文件中的where過濾;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。