本篇博客之起因是,在做技术选型时,DataX成为了数据同步的候选项。然而并未在实际项目中使用(因项目原因)。仅仅是尝试了一遍,把技术路子走通,并未深入学习。
博客内容,意在测试,不免简陋。如在真实项目中使用,不管是项目代码编写,还是作业脚本编写,都应该根据实际情况去深入学习、多多优化,以满足真实的使用场景。
1. DataX简介
官方介绍:DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
2. 下载部署
2.1 依赖环境:Windows/Linux、JDK 1.8+、Python(2或3)。
2.2 访问项目DataX,简单浏览项目文档。
2.2 两种下载方式:
- 方式一:直接下载DataX工具包:DataX下载地址。
- 方式二:下载DataX源码,自己编译。
2.2 为了方便,我们直接下载工具包,得到datax.tar.gz
文件。
2.3 将下载文件加压到本地某个目录,进入bin目录,即可运行同步作业。(说明:DataX解压后即可使用,所以部署很简单)
$ cd {
YOUR_DATAX_HOME}/bin
$ python datax.py {
YOUR_JOB.json}
2.4 执行自检脚本,看到如下运行结果,表示部署正常。
# 当前目录datax/bin
$ python datax.py ../job/job.json
……
2024-02-29 15:52:09.374 [job-0] INFO JobContainer -
任务启动时刻 : 2024-02-29 15:51:59
任务结束时刻 : 2024-02-29 15:52:09
任务总计耗时 : 10s
任务平均流量 : 253.91KB/s
记录写入速度 : 10000rec/s
读出记录总数 : 100000
读写失败总数 : 0
3. 运行测试脚本
3.1 编写作业脚本,新建json文件,将模板中的示例配置改为自己的实际配置即可。
- 方式一:通过命令查看配置模板,示例如下:
# 命令格式:python datax.py -r {YOUR_READER} -w {YOUR_WRITER} $ python datax.py -r mysqlreader -w mysqlwriter
- 方式二:直接查看源码中的文档,如:MysqlReader。
3.2 本人测试所写,用于GreenPlum数据库同步的作业脚本gp2gp.json
如下:
{
"job": {
"setting": {
"speed": {
// 通道数
"channel": 3,
//设置传输速度,单位为byte/s,DataX运行会尽可能达到该速度但是不超过它.
"bps":