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 下都有明确定义,要与之匹配。