java调用使用datax

3 篇文章 0 订阅

简介

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

使用说明

1下载源码

从git上拉取datax代码下载到本地 git地址

2本地将代码编译

cd  {DataX_source_code_home}
mvn -U clean package assembly:assembly -Dmaven.test.skip=true

打包成功显示下图

如果编译和后续install 出现问题的话,可以暂时将出错的模块注释掉.不要因为出点错,就放弃.
但是必须保证datax-core 和datax-common 这两个模块不会出问题

在打包完后会在当前目录下形成如下目录

3.将datax的包install到本地仓库(或者公司私服上)

4.新建一个maven测试类测试datax

4.1 在pom文件中添加datax的核心依赖
 		<dependency>
            <groupId>com.alibaba.datax</groupId>
            <artifactId>datax-core</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
4.2 编写测试代码
package com.alibaba;
import com.alibaba.datax.common.exception.DataXException;
import com.alibaba.datax.common.exception.ExceptionTracker;
import com.alibaba.datax.core.Engine;
import groovy.util.logging.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @author Administrator
 */
@Slf4j
public class DataXTest {

   static Logger log = LoggerFactory.getLogger(DataXTest.class);

    public static void main(String[] args) {


        int exitCode = 0;

        /**
         * classPath 为刚才打包的目录 bin的上一级目录 我的dataX源码目录为E:\study\code\DataX
         * jobFilePath:要放在job目录中和job.json同级
         *  System.setProperty("datax.home", classPath); 必须要设置datax.home这个属性不然会找不到执行的入口
         */
        String classPath ="E:\\study\\code\\DataX\\target\\datax\\datax";

        String jobFilePath="E:\\study\\code\\DataX\\target\\datax\\datax\\job\\0a5c4581-b1c9-4810-8855-74624a1219f4.json";

        System.setProperty("datax.home", classPath);


        String[] dataXArgs = {"-job", jobFilePath, "-mode", "standalone", "-jobid", "-1"};
        try {
            Engine.entry(datXArgs);

        }catch (DataXException e){
            e.printStackTrace();
        }
        catch (Throwable throwable) {
            /**
             * 拿到异常信息入库.
             */
            log.error("\n\n经DataX智能分析,该任务最可能的错误原因::\n" + ExceptionTracker.trace(throwable));

        }


    }


}

{
	"job":{
		"content":[
			{
				"reader":{
					"parameter":{
						"password":"123456",
						"connection":[
							{
								"querySql":[
									"SELECT * FROM actor"
								],
								"jdbcUrl":[
									"jdbc:mysql://127.0.0.1:3306/test"
								]
							}
						],
						"username":"root"
					},
					"name":"mysqlreader"
				},
				"writer":{
					"parameter":{
						"password":"123456",
						"session":[
							"set session sql_mode='ANSI';"
						],
						"column":[
							"*"
						],
						"connection":[
							{
								"jdbcUrl":"jdbc:mysql://127.0.0.1:3306/test",
								"table":[
									"actor_copy"
								]
							}
						],
						"writeMode":"insert",
						"username":"root",
						"preSql":[
							"truncate table actor_copy"
						]
					},
					"name":"mysqlwriter"
				}
			}
		],
		"setting":{
			"errorLimit":{
				"record":10,
				"percentage":0.01
			},
			"speed":{
				"channel":1
			}
		}
	}
}
执行完结果
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值