编译 datax
datax 是阿里巴巴官方开源的一个数据同步工具,可以用于诸多数据源之间的同步,并且使用简单、效率高。
datax 官方有提供编译好的版本,可以直接下载,但是其中包含有 BUG。
我最近遇到的一个问题是,当从 MongoDB 同步数据到传统的结构化数据库时(如MySQL),会出现字段无法对齐的情况。
举个例子。比如 MongoDB 中存在这样的一个 Collection:
当同步到 mysql 后,会变成这样:
明显的,它只是按顺序来映射到目标端,而并没有按字段名来做匹配。
问题的解决:重新编译datax
直接从 github 中下载 datax 的源码,本来我想只编译它的 mongodbreader 插件,但是一直报错,后来想想应该是要整个源码编译才行。
cd 到 datax 目录内之后,官方提供了编译命令:
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
直接编译是会出错的,会报几个依赖找不到,这是因为源码中的 pom.xml 文件里面设置的 maven 依赖使用的是旧版本,会有问题,所以需要一一修改。
要修改的地方有 3 个:
odpsreader/pom.xml和odpswriter/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
(本文完)
--------------------------------------------------------------------------------------------------------------------------
致虚极,守静笃
使用我的阿里云幸运券,购买阿里云ECS有优惠:阿里云幸运券
>>>>> 腾讯云新用户优惠 <<<<<
--------------------------------------------------------------------------------------------------------------------------
致虚极,守静笃
使用我的阿里云幸运券,购买阿里云ECS有优惠:阿里云幸运券
>>>>> 腾讯云新用户优惠 <<<<<