Datax3.0介紹
環境要求
【JDK和Python需要配置環境變量,步驟省略,注意Python的安裝路徑不要有空格】
環境 | 版本 | 獲取方式 | 其它說明 |
---|---|---|---|
OS | win10家庭中文版 | 無 | 無 |
JDK | 1.8+ | 鏈接:https://pan.baidu.com/s/16jTzFDQ48JwccPpArEOcpw 提取碼:jx9b |
推薦1.8 |
Python | 2.x | 鏈接:https://pan.baidu.com/s/1rNTyI7iqdBo6Y17fAz1AJA 提取碼:2z7v |
本人測試用2.7.18 |
Datax | 3.0 | 鏈接:https://pan.baidu.com/s/1sk_Q6ghvzOecZRO23jjDqg 提取碼:cb9j |
雲盤上Datax是修改過的,支持Oracle增量同步;沒有此需求直接在GitHub上下載即可 |
Oracle | Oracle11g | 鏈接:https://pan.baidu.com/s/1DQGF0ghIUWyD-8PLbSbaQw 提取碼:54ri | 無 |
maven | 3.x | https://maven.apache.org/download.cgi | 編譯源碼時使用 |
Datax解壓測試
1、Datax是免安裝的,將下載的 datax.tar.gz 放在本地磁盤下直接解壓【本人是WinRAR直接解壓的】;
2、進入到解壓目錄的 datax\bin 下,“Shift” + 鼠標右擊,打開“在此處打開Powershell窗口”;
3、在命令窗口執行 CHCP65001 【避免執行過程中有中文亂碼】;
4、執行命令 python .\datax.py ..\job\job.json 測試是否安裝成功,出現如下信息則表示成功;
關於json文件的配置
要執行的json文件存放於Datax的解壓目錄的 datax\job 文件夾下,后面可將要執行的文件都放在此處統一管理。
以下是本人測試的json文件僅供參考:
{
"job":{
"setting":{
"speed":{
"channel":2
}
},
"content":[
{
"reader":{
"name":"oraclereader",
"parameter":{
"username":"數據庫賬號",
"password":"數據庫密碼",
"column":[
"id",
"name"
],
"where": "id > 2000000",
"connection":[
{
"table":[
"test"
],
"jdbcUrl":[
"jdbc:oracle:thin:@127.0.0.1:1521:orcl"
]
}
]
}
},
"writer":{
"name":"oraclewriter",
"parameter":{
"username":"數據庫賬號",
"password":"數據庫密碼",
"column":[
"id",
"name"
],
"writeMode": "update(id)",
"connection":[
{
"jdbcUrl":"jdbc:oracle:thin:@127.0.0.1:1521:orcl",
"table":[
"test"
]
}
]
}
}
}
]
}
}
以下是測試結果:
關於job.json的部分配置參數說明,原文鏈接:https://blog.csdn.net/qq_42764269/article/details/119577358
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"querySql": "", #自定義sql,支持多表關聯,當用戶配置querySql時,直接忽略table、column、where條件的配置。
"fetchSize": "", #默認1024,該配置項定義了插件和數據庫服務器端每次批量數據獲取條數,該值決定了DataX和服務器端的網絡交互次數,能夠較大的提升數據抽取性能,注意,該值過大(>2048)可能造成DataX進程OOM
"splitPk": "db_id", #僅支持整形型數據切分;如果指定splitPk,表示用戶希望使用splitPk代表的字段進行數據分片,如果該值為空,代表不切分,使用單通道進行抽取
"column": [], #"*"默認所有列,支持列裁剪,列換序
"connection": [
{
"jdbcUrl": ["jdbc:mysql://IP:3306/database?useUnicode=true&characterEncoding=utf8"],
"table": [] #支持多張表同時抽取
}
],
"password": "",
"username": "",
"where": "" #指定的column、table、where條件拼接SQL,可以指定limit 10,也可以增量數據同步,如果該值為空,代表同步全表所有的信息
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"column": [], #必須指定字段名,字段類型,{"name":"","tpye":""}
"compress": "", #hdfs文件壓縮類型,默認不填寫意味着沒有壓縮。其中:text類型文件支持壓縮類型有gzip、bzip2;orc類型文件支持的壓縮類型有NONE、SNAPPY(需要用戶安裝SnappyCodec)。
"defaultFS": "", #Hadoop hdfs文件系統namenode節點地址。
"fieldDelimiter": "", #需要用戶保證與創建的Hive表的字段分隔符一致
"fileName": "", #HdfsWriter寫入時的文件名,需要指定表中所有字段名和字段類型,其中:name指定字段名,type指定字段類型。
"fileType": "", #目前只支持用戶配置為”text”或”orc”
"path": "", #存儲到Hadoop hdfs文件系統的路徑信息,hive表在hdfs上的存儲路徑
"hadoopConfig": {} #hadoopConfig里可以配置與Hadoop相關的一些高級參數,比如HA的配置。
"writeMode": "" #append,寫入前不做任何處理,文件名不沖突;nonConflict,如果目錄下有fileName前綴的文件,直接報錯。
}
}
}
],
"setting": {
"speed": { #流量控制
"byte": 1048576, #控制傳輸速度,單位為byte/s,DataX運行會盡可能達到該速度但是不超過它
"channel": "" #控制同步時的並發數
}
"errorLimit": { #臟數據控制
"record": 0 #對臟數據最大記錄數閾值(record值)或者臟數據占比閾值(percentage值,當數量或百分比,DataX Job報錯退出
}
}
}
}
需要注意的是:json文件中的讀寫插件【oraclereader、oraclewriter】都不是隨便定義的,在 datax\plugin 下都有明確定義,要與之匹配。