datax-web在windows上环境搭建及同步数据测试

datax-web部署说明:

datax-web 是一个集成datax和xxljob定时任务优秀的同步数据库开源框架。data-web开源地址:https://github.com/WeiYe-Jing/datax-web

  1. DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

  2. 环境准备:
    JDK(1.8以上,推荐1.8)
    Python(推荐Python2.7.X)
    datax

  3. github下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

  4. 快速搭建datax,下载时使用

  5. 使用datax-web,做全量同步数据,增量同步数据。

环境搭建

  一、安装jdk 

        不做介绍,不会自行百度。

 二、安装Python

        下载2.7.x版本安装。默认下一步安装,不做介绍,本文默认安装在:C:\Python27

  三、下载datax

    下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz,解压,本文解压到:E:\workspace\datax\datax

     测试是否安装成功:进入datax的bin目录:

      1、新建一个文件为:stream2stream.json,把下面的内容复制到,stream2stream.json文件内。

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "streamreader",
          "parameter": {
            "sliceRecordCount": 10,
            "column": [
              {
                "type": "long",
                "value": "10"
              },
              {
                "type": "string",
                "value": "hello,你好,世界-DataX"
              }
            ]
          }
        },
        "writer": {
          "name": "streamwriter",
          "parameter": {
            "encoding": "UTF-8",
            "print": true
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 5
       }
    }
  }
}

2、在bin目录输入cmd,如下图,进入doc命令窗口

3、防止乱码先输入:CHCP 65001, 再输入:python datax.py ./stream2stream.json   按回车,出现如下结果,说明按照成功了。

四,data-web部署

1、datax-web下载地址:https://github.com/WeiYe-Jing/datax-web 拉取v2.1.2版本。命令:git clone -b 分支名称  代码URL

如图,该项目主要分为5个部分,主要的是要启动datax-admin和datax-executor
导入的时候可能有报错,大部分问题都是maven包没有下载全
(建议导入之后先在项目的主目录下使用 mvn install,这样基本上所有的依赖包都会install好)
注: 项目中存在lombok包,如果没有下载该插件,需要补全log和类中缺少的set/get方法。

2、执行sql语句,语句在bin/db的目录下,执行datax_web.sql

3、修改配置文件
(1)修改datax-admin中的数据源配置

(2)修改datax-executor中的datax.py的地址和存放临时json文件地址,datax.py就是上面解压的地址:

4、datax-web,前端的代码:https://github.com/WeiYe-Jing/datax-web-ui,自己可以修改自己的风格。

5、先启动admin,再启动executor,访问地址: http://127.0.0.1:8080/index.html

五,通过datax-web实现数据同步

 1、在数据源管理,创建需要同步的数据源。

2、在datax任务模板创建数据。

3、任务构建,创建任务。

4、上面几步弄好后,就会在任务管理生成一条记录。其他两条是我新建的。

5、在操作,点击执行一次。

6、在查询同步日志提示

2020-08-14 14:30:39 [JobThread.run-130] <br>----------- datax-web job execute start -----------<br>----------- Param:
2020-08-14 14:30:39 [BuildCommand.buildDataXParam-101] ------------------Command parameters:
2020-08-14 14:30:39 [ExecutorJobHandler.execute-83] java.io.IOException: Cannot run program "python": CreateProcess error=2, 系统找不到指定的文件。
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at java.lang.Runtime.exec(Runtime.java:485)
	at com.wugui.datax.executor.service.jobhandler.ExecutorJobHandler.execute(ExecutorJobHandler.java:55)
	at com.wugui.datatx.core.thread.JobThread.run(JobThread.java:153)
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
	at java.lang.ProcessImpl.start(ProcessImpl.java:137)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 4 more

2020-08-14 14:30:39 [JobThread.run-165] <br>----------- datax-web job execute end(finish) -----------<br>----------- ReturnT:ReturnT [code=500, msg=command exit value(-1) is failed, content=null]
2020-08-14 14:30:39 [TriggerCallbackThread.callbackLog-186] <br>----------- datax-web job callback finish.

经过调试,在datax-executor项目中  ExecutorJobHandler类的 buildDataXExecutorCmd方法

把 cmdArr.add("python");  改为  cmdArr.add("C:\\Python27\\python.exe");  Python安装目录:

 

注:以上是全量同步数据,但是实际项目中往往是增量同步数据,增量包含了,数据更新,新数据的插入。

六、增量同步数据

1、直接在任务管理创建任务管理:本次是sqlserver 数据库同步到 mysql数据库,其他的同步数据也是同样的道理

2、新建任务界面:可以按照下面图片填写,关键是下面同步的json。这个datax-web上有说明:https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/increment-desc.md

3、关键的json文件:先关键字段说明,后面有完整的实例;

 

最后完整的json格式,其他的同步方式也是按照这个方式修改

{
  "job": {
    "setting": {
      "speed": {
        "channel": 3,
        "byte": 1048576
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0.02
      }
    },
    "content": [
      {
        "reader": {
          "name": "sqlserverreader",
          "parameter": {
            "username": "jOwP5VciBuEW4NAOnOP2kA==",
            "password": "1KNsH0qiLohoWZu++t2RbQ==",
            "column": [
              "*"
            ],
            "splitPk": "",
            "connection": [
              {
                "jdbcUrl": [
                  "jdbc:sqlserver://10.34.252.117:1433;DatabaseName=GRI_DW"
                ],
                "querySql": [
                  "select * from dbo.T_USER where MODIFYTIME >= DATEADD(S,CONVERT(INT,${lastTime}),'1970-01-01 08:00:00') and MODIFYTIME <  DATEADD(S,CONVERT(INT,${currentTime}),'1970-01-01 08:00:00')"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "mysqlwriter",
          "parameter": {
            "username": "yRjwDFuoPKlqya9h9H2Amg==",
            "password": "Sdnsfxh3mffuyslO+D6eXg==",
            "column": [
              "`USERID`",
              "`EMPLNAME`",
              "`EMPLNO`",
              "`MOBILEPHONE`",
              "`SEX`",
              "`AGE`",
              "`USERNAME`",
              "`PASSWORD`",
              "`COMPANYID`",
              "`COMPANYNAME`",
              "`DEPTID`",
              "`DEPTNAME`",
              "`DUTYID`",
              "`DUTYNAME`",
              "`MANAGER`",
              "`REMARK`",
              "`MAC`",
              "`FACTORYCODE`",
              "`USERTYPE`",
              "`FACTORYNAME`",
              "`CPCUSERNAME`",
              "`PERSONNELNO`",
              "`ORIGINALUN`",
              "`UNITYUSERNAME`",
              "`WRONGPWDTIMES`",
              "`STATE`",
              "`EFFECTDATE`",
              "`EMAILADDRESS`",
              "`LASTLOGINTIME`",
              "`FROZENREASON`",
              "`INPUTTIME`",
              "`INPUTER`",
              "`MODIFIER`",
              "`MODIFYTIME`",
              "`VALIDATETIME`",
              "`ANNEXNAME`",
              "`ANNEXPATH`",
              "`SAVENAME`"
            ],
            "connection": [
              {
                "table": [
                  "t_user"
                ],
                "jdbcUrl": "jdbc:mysql://localhost:3306/test"
              }
            ],
            "writeMode": "update (EMPLNO,MOBILEPHONE,MODIFYTIME,USERID)"
          }
        }
      }
    ]
  }
}

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值