logo头像
Snippet 博客主题

数据同步工具:DataX的使用(Read、Write、Transformer)

DataX支持的数据库

DataX速度快的原因

DataX同步数据,是直接对数据源进行读写操作。而非selectinsert

DataX安装

环境要求

  • JDK(1.6以上)
  • Python

DataX工具包下载:
下载地址

下载后解压至本地某个目录,进入bin目录,即可运行同步作业:
自检脚本:
python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json
下图表示自检成功。

从Hbase同步数据到Mysql,实现数据增量同步

job.json配置文件如下:
ps:json文件中不能有注释,为了便于说明才加上的,使用时应删除注释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
{
"job": {
"setting": {
"speed": {
"byte": 10485760
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "hbase11xreader", // 配置成读Hbase
"parameter": {
"hbaseConfig": {
"hbase.rootdir": "$hbase_dir",
"hbase.cluster.distributed": "true",
"hbase.zookeeper.quorum": "$hbase_zk"
},
"table": "$hbase_table",
"encoding": "utf-8",
"mode": "normal",
"column": [
{
"name": "i: j_id",
"type": "string"
},
{
"name": "i: t_id",
"type": "string"
},
{
"name": "i: a_id",
"type": "string"
},
{
"value": "$current_time",
"type": "string"
}

],
"range": {
"startRowkey": "",
"endRowkey": "",
"isBinaryRowkey": true
}
}
},
"writer": {
"name": "mysqlwriter", // 配置成写Mysql
"parameter": {
"writeMode": "replace",
"username": "$db_user",
"password": "$db_password",
"column": [
"job_id",
"task_plan_id",
"audience_id",
"created_time"
],
"session": [
"set session sql_mode='ANSI'"
],
"preSql": [
""
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://$db_host:$db_port/$db_name?characterEncoding=utf8",
"table": [
"$mysql_table"
]
}
]
}
},
"transformer": [ // 实现增量同步,只同步当天数据
{
"name": "dx_filter",
"parameter":
{
"columnIndex":0,
"paras":["not like","$cur_date"]
}
}
]
}
]
}
}

上一篇