DataX 簡介
DataX 是阿裡巴巴集團内被廣泛使用的離線資料同步工具/平台,實作包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構資料源之間高效的資料同步功能。
Features
DataX 本身作為資料同步架構,将不同資料源的同步抽象為從源頭資料源讀取資料的 Reader 插件,以及向目标端寫入資料的 Writer 插件,理論上 DataX 架構可以支援任意資料源類型的資料同步工作。同時 DataX 插件體系作為一套生态系統, 每接入一套新資料源該新加入的資料源即可實作和現有的資料源互通。
DataX詳細介紹
請參考:DataX-Introduction
DataX安裝部署及小試
下載下傳壓縮包:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
下載下傳後的包名:datax.tar.gz
解壓後 {datax} 目錄下有 {bin conf job lib log log_perf plugin script tmp} 幾個目錄
安裝
将下載下傳後的壓縮包直接解壓後可用,前提是對應的 java 及 python 環境滿足要求。
System Requirements
- Linux
- JDK(1.8以上,推薦1.8)
- Python(推薦Python2.6.X)
- Apache Maven 3.x (Compile DataX)
由于我本地 python 為 3.7.0 ,是以把 [datax_hoem]/bin 目錄下的三個py檔案修改成了符合 python3 文法要求的檔案,執行也沒報錯,
修改後的檔案,如需要可下載下傳替換:https://github.com/TwoThreeWang/DataX_Python3
測試
測試配置了一個讀取 csv 寫入到另一個 csv 的 json
-
第一步、建立作業的配置檔案(json格式)
test.json
{
"setting": {},
"job": {
"setting": {
"speed": {
"channel": 2
}
},
"content": [
{
"reader": {
"name": "txtfilereader",
"parameter": {
"path": ["E:\\test.csv"],
"encoding": "UTF-8",
"column": [
{
"index": 0,
"type": "long"
},
{
"index": 1,
"type": "long"
},
{
"index": 2,
"type": "long"
}
],
"fieldDelimiter": ",",
"skipHeader": "False"
}
},
"writer": {
"name": "txtfilewriter",
"parameter": {
"path": "E:\\test",
"fileName": "test",
"writeMode": "truncate",
"format": "yyyy-MM-dd",
"header":['id', 'name', 'age']
}
}
}
]
}
}
TxtFileReader 參數說明:https://github.com/alibaba/DataX/blob/master/txtfilereader/doc/txtfilereader.md
所有類型參數說明:https://github.com/alibaba/DataX
- 第二步:啟動 DataX
python datax.py E:\DataX-json\test.json
問題及解決
- Python 版本要為 2,原因前面已經說過了,可手動修改為 3 的文法
- cmd 亂碼解決:輸入 CHCP 65001
- 資料庫中的資料中文亂碼解決:在 json 檔案中 jdbcUrl 項加上:?characterEncoding=utf8
"jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/dq?characterEncoding=utf8"]
參考:
- https://blog.csdn.net/qq_37552993/article/details/80235010
- https://github.com/alibaba/DataX
- https://www.imooc.com/article/15640#