编译 datax

datax 是阿里巴巴官方开源的一个数据同步工具,可以用于诸多数据源之间的同步,并且使用简单、效率高。

datax 官方有提供编译好的版本,可以直接下载,但是其中包含有 BUG。

我最近遇到的一个问题是,当从 MongoDB 同步数据到传统的结构化数据库时(如MySQL),会出现字段无法对齐的情况。

举个例子。比如 MongoDB 中存在这样的一个 Collection:

983631-20190724135104108-1862203058.png

当同步到 mysql 后,会变成这样:

983631-20190724135133766-1314274658.png

明显的,它只是按顺序来映射到目标端,而并没有按字段名来做匹配。

问题的解决:重新编译datax

直接从 github 中下载 datax 的源码,本来我想只编译它的 mongodbreader 插件,但是一直报错,后来想想应该是要整个源码编译才行。

cd 到 datax 目录内之后,官方提供了编译命令:

mvn -U clean package assembly:assembly -Dmaven.test.skip=true

直接编译是会出错的,会报几个依赖找不到,这是因为源码中的 pom.xml 文件里面设置的 maven 依赖使用的是旧版本,会有问题,所以需要一一修改。

要修改的地方有 3 个:

odpsreader/pom.xmlodpswriter/pom.xml

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-core</artifactId>
    <version>0.20.7-public</version>
</dependency>

otsstreamreader/pom.xml

<dependency>
    <groupId>com.aliyun.openservices</groupId>
    <artifactId>tablestore-streamclient</artifactId>
    <version>1.0.0</version>
</dependency>

修改完后,再执行打包命令:

mvn -U clean package assembly:assembly -Dmaven.test.skip=true

最终看到BUILD SUCCESS就表明打包成功了。生成的目标文件在datax/target/目录下

参考:

[1]. MongoDB 读取数据写入hdfs,丢失字段
[2]. odps依赖包确实导致无法编译
[3]. otsstreamreader插件pom依赖编译报错
[4]. DataX userGuide

转载于:https://www.cnblogs.com/wuzhiblog/p/compile_datax3_0.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值