DataX安装部署和插件二次开发

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

DataX安装部署

下载完毕后解压缩,长这样:

进入plugin/reader文件夹,看有没有这些文件,有就删除,不然报错。

同理,进入plugin/writer文件夹,删除以下文件:

进入bin文件夹,记事本打开datax.py文件,找到print语句,看看是

print 'xxxxx'

还是

print('xxxxx')

如果是前者,说明需要python2.x环境,如果是后者,则是python3.x的环境,然后去python官网下载对应的python版本,下载完安装。

ps,如果电脑里已经安装了python3.x,但是下载的datax需要的是python2.x,又不想卸载原来的python3.x,怎么办?

这么办,改环境变量:

把python2.x需要的环境变量配到3.x上面,保存,然后去cmd验证一下:

回到datax的目录,进入bin文件夹,在文件夹上面的地址栏里敲cmd,而后输入:

python datax.py -r {your_reader} -w {your_writer}

比如,我有两个数据库,一个是mysql一个是oracle,我要把mysql数据库里的某个表里的内容,复制到oracle里,我就输入:

python datax.py -r mysqlreader -w oraclewriter

不会拼写或者懒得拼写的(比如我),去plugin/reader,plugin/writer里复制。

而后,敲回车,出来这个:

把红框的代码复制,建一个后缀名是.json的文件存起来,名字随便什么都行,但后缀名一定是.jxon。比如我叫它job_mysql_oracle.json。放在bin文件夹里。

然后,改这些内容。

如果是mysql数据库,jdbcUrl那里,后面要填useSSL=false,否则报错。

填完继续放在bin目录下,在cmd里写:

python datax.py {your_job}

比如,我刚才建的job名字是job_mysql_oracle.json,那就写:

python datax.py job_mysql_oracle.json

回车,画面长这样:

先别管乱码的事,先去数据库看一眼,嗯,有数据。证明成功了。

下面来解决乱码的事,不乱码可以跳过

在cmd窗口输入:

chcp 65001

来,再走一边刚才的操作:

这说明,DataX本身是通了的。

DataX插件二次开发

我用的是java-spring boot。

首先在datax/lib文件夹里找到这两个jar包

放在项目文件夹里,比如resources/lib文件夹:

打开pom.xml文件,添加这些东西:

<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>data-common</artifactId>
<version>0.01</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/datax-common-0.0.1-SNAPSHOT.jar</systemPath>
</dependency>
<dependency>
<groupId>com.alibaba.datax</groupId>
<artifactId>data-core</artifactId>
<version>0.01</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/datax-core-0.0.1-SNAPSHOT.jar</systemPath>
</dependency>

注意sysPath栏,要填对,不然标红

还要把这些添进去,不然也会报错(心累):

<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>

效果如下:

重新编译,直到不标红为止。而后,编写如下代码:


    String DATAX_HOME = "{你的datax目录(是根目录,下面能找到bin、plugin文件夹的目录)的地址(盘符://文件夹//文件夹那种)}";
    System.setProperty("datax.home", DATAX_HOME);
    String[] itemDatxArgs = {"-job", DATAX_HOME+"{你放json文件夹的目录名称/文件名(比如:/bin/job_mysql_oracle.json)}", "-mode", "standalone","-jobid", "-1"};

try {
        com.alibaba.datax.core.Engine.entry(itemDatxArgs);
    } catch (Throwable tb) {
        System.out.println("DataX执行异常:\n" +com.alibaba.datax.common.exception.ExceptionTracker.trace(tb));
    }

然后执行这个代码,如果你之前的步骤没有问题,那这个代码是没有问题的。

后记:

这个东西本身不难,但因为搜到的教程,作者都是站在自己角度上写的,第一次接触这东西的人,就很难理解,走了不少弯路,堪比过五关斩六将。希望我的这篇拙作,能帮助一些人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DataX是一个用于数据同步的开源工具,它提供了丰富的插件来支持不同的数据源和目标。根据引用[2],DataX插件开发模式是基于Record的抽象,各个插件只需要按照规范进行开发即可。引用[3]中提到,DataX的打包成功后的包结构中包含了插件目录。 对于Elasticsearch读插件二次开发,你可以参考DataX插件开发规范和文档。首先,你需要了解Elasticsearch的数据结构和API,以便在插件中进行数据读取操作。然后,你可以在DataX插件目录中创建一个新的插件目录,并按照规范进行插件开发。在插件的配置文件中,你需要指定Elasticsearch的连接信息和查询条件等参数。 在插件开发过程中,你可以使用DataX提供的各种工具和接口来简化开发和测试。例如,你可以使用DataX的RecordReader接口来读取Elasticsearch中的数据,并将其转换为DataX的Record对象。你还可以使用DataX的各种工具类来处理数据转换和批量写入等操作。 最后,你可以使用DataX的命令行工具来运行你开发插件,并通过配置文件指定插件的参数和数据源信息。例如,你可以使用类似于引用[1]的命令来运行你的Elasticsearch读插件,并指定数据源的路径和插件的配置文件。 总结起来,要进行DataX的Elasticsearch读插件二次开发,你需要了解Elasticsearch的数据结构和API,按照DataX插件开发规范进行插件开发,使用DataX的工具和接口简化开发和测试,最后使用DataX的命令行工具来运行你开发插件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值