Datax的配置及使用

                                          Datax的配置及使用

1、 DataX3.0概覽

  DataX 是一個異構數據源離線同步工具,致力於實現包括關係型數據庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構數據源之間穩定高效的數據同步功能

DataX目前已經有了比較全面的插件體系,主流的RDBMS數據庫、NOSQL、大數據計算系統都已經接入,具體詳情DataX的GitHub地址

2、 DataX3.0的使用


2.1 準備工作
Java版本要求:jdk1.8及以上
參考鏈接:Linux下jdk環境配置及JDK版本升級
Python版本要求:2.7.X,DataX未更新至Python3
DataX下載:datax下載
當然你還可以去Github去下載源碼進行編譯,通過此種方式你可以自行選擇你需要的配置進行打包,如只需要Mysql的,那麼其他的相關支持你都不需要用到,也就不需要都打包,更輕量使用。與此同時,你還需要maven工具進行打包,在pom.Xml中刪除你不需要的模塊,再執行maven命令:mvn -U clean package assembly:assembly -Dmaven.test.skip=true,生成的文件在/target/datax/datax/下
確保上述步驟都通過後則繼續往下看。

2.2 快速上手

2.2.1 構建一個測試數據表

表結構如表2-1所示。

                                                                                                表2-1 測試表結構

字段名

類型

備註

name

varchar

 

age

int

 

age_true

int

 

 並向其中插入幾條數據,如表2-2所示。

                                                                                          表2-2 測試表數據

name age age_true
tom 23  
tom 23  
tom 23  
tom 23  
tom 23  
tom 23  
tom 23  
tom 23  
... ...  

2.2.2 構建任務Json

DataX工具是用json文件作爲配置文件的,根據官方提供文檔我們構建Json文件如下所示。

{ 
    "job": { 
        "content": [ 
            { 
                "reader": { 
                    "name": "mysqlreader",
                    "parameter": { 
                        "username": "root", 
                        "password": "123456",  
                        "column": ["name","age"], 
                        "where": "age<100", 
                        "connection": [ 
                            { 
                                "table": [ 
                                    "person" 
                                ], 
                                "jdbcUrl": [ 
                                    "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8"
                                ] 
                            } 
                        ] 
                    } 
                }, 
                "writer": { 
                    "name": "mysqlwriter",
                    "parameter": { 
                        "username": "root", 
                        "password": "123456", 
                        "column": ["name","age_true"],
                        "connection": [ 
                            { 
                                "table": [ 
                                    "person" 
                                ], 
                                "jdbcUrl":"jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8"                              
                            } 
                        ]   
                    } 
                } 
            } 
        ], 
        "setting": {
                 "speed": {
                         "channel": 1,
                         "byte": 104857600
                 },
                 "errorLimit": {
                         "record": 10,
                         "percentage": 0.05
      }
    } 
}

它由三部分組成,分別是讀,寫和通用配置。
Reader部分,也就是讀,常用以下幾種參數,如表2-3所示。
                                                                                          

表2-3 讀屬性
參數名 解釋 備註
name 與要讀取的數據庫一致 字符串
jdbcUrl 數據庫鏈接

數組

會自動選擇一個合法的鏈接

可以填寫連接附件控制信息

username 數據庫用戶名 字符串,數據庫的用戶名
password 數據庫密碼 字符串,數據庫的密碼
table 要同步的表名 數組,需保證表結構一致
column 要同步的列名 數組
where 選取的條件 字符串
querySql 自定義查詢語句 會自動忽略上述的同步條件

Writer部分,也就是寫,常用以下幾種參數,如表2-4所示

2-3 寫屬性
參數名 解釋 備註
name 與要讀取的數據庫一致 字符串
jdbcUrl 數據庫鏈接

字符串

不和writer一樣

可以填寫連接附件控制信息

username 數據庫用戶名 字符串,數據庫的用戶名
password 數據庫密碼 字符串,數據庫的密碼
table 要同步的表名 數組,需保證表結構一致
column 列名可以不對應,但是類型和總的個數要一致 數組,需保證表結構一致
preSql 寫入前執行的語句 數組,比如清空表等
postSql 寫入後執行的語句 數組
writeMode 寫入方式,默認爲insert

insert/replace/update

job.setting.speed(流量控制)
Job支持用戶對速度的自定義控制,channel的值可以控制同步時的併發數,byte的值可以控制同步時的速度
job.setting.errorLimit(髒數據控制)
Job支持用戶對於髒數據的自定義監控和告警,包括對髒數據最大記錄數閾值(record值)或者髒數據佔比閾值(percentage值),當Job傳輸過程出現的髒數據大於用戶指定的數量/百分比,DataX Job報錯退出。
 

2.2.3 執行
Win+R+cmd進入命令行控制檯,首先通過java –version和python查看是否滿足要求,然後執行:python 空格{datax文件夾路徑}\bin\datax.py 空格{json配置文件的路徑},如,python D:\download\datax\bin\datax.py D:\download\datax\job\job2.json
接着控制檯會打印出相應的信息,控制檯亂碼輸入 chcp空格 65001。

我們可以看到寫入數據表中的數據已經發生了變化,此處是將age位置的信息寫入到age_true位置上,結果如表2-5所示。
                                                                                         表2-5 DataX寫入結果

name age age_true
tom 23  
tom 23  
tom 23  
tom 23  
tom    23
tom    23
tom    23
tom    23
... ...

至此我們就利用datax進行了一次數據同步

在生產環境中我們往往同步的表很多,每個表用datax進行同步都要有對應的json文件,我們可以利用腳本批量生成json文件,具體可以參考另一篇博客:

本篇博客參考資源:https://blog.csdn.net/qq_28131641/article/details/80540079

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章