Linux下的Datax编译记录

本文记录了在Linux环境下编译DataX的过程,包括安装必要软件如JDK1.8、Git和Maven,下载DataX源码,修改驱动版本号,以及通过Maven进行打包。特别关注了在从MongoDB同步数据到MySQL时遇到的字段数不匹配错误,并解决了由于MongoDB驱动版本不兼容引起的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在通过 datax-web使用 datax从mongo数据库同步到mysql数据库时,mongo数据库某一集合中的某一文档部分字段为 null,同步时出现了以下错误:
[AnalysisStatistics.analysisStatisticsLog-53] com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-00], Description:[您的配置错误.]. - 列配置信息有错误. 因为您配置的任务中,源头读取字段数:13 与 目的表要写入的字段数:15 不相等. 请检查您的配置并作出修改.

github issues/125中提到mongo数据库版本影响,查看自己的mongo数据库,db.version()4.2.5\DataX\mongodbreader\pom.xmlmongo-java-driver版本为3.2.2,
mongo java driver支持mongo版本网址
mongodriver.jpg
因此需要修改mongodbreadermongodbwriterpom.xml文件中mongo-java-driver版本号,并重新编译Datax

安装jdk1.8&git

yum –y install java-1.8.0*
yum install git

安装maven

#下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
#解压
tar -zxvf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 maven
#添加环境变量
vim /etc/profile
	MAVEN_HOME=/root/maven
	export PATH=${MAVEN_HOME}/bin:${PATH}

source /etc/profile
查看maven版本
mvn –v

下载DataX源码及打包

参照Datax userGuid

Datax userGuid.md

 git clone git@github.com:alibaba/DataX.git

修改驱动版本号

mongodbreadermongodbwriterpom.xml文件中mongo-java-driver版本号修改为<version>3.12.7</version>

通过maven打包

cd  /root/Datax
mvn -U clean package assembly:assembly -Dmaven.test.skip=true

打包过程中的问题

无法下载缺少eigenbase:eigenbase-properties:jar:1.1.4
Github下载eigenbase-properties
根据说明文档

git clone git://github.com/julianhyde/eigenbase-properties.git
cd eigenbase-properties
mvn install

将打包好的jar包复制到/root/下,执行mvn install:install-file -DgroupId=eigenbase -DartifactId=eigenbase-properties -Dversion=1.1.4 -Dpackaging=jar -Dfile=/root/eigenbase-properties-1.1.6-SNAPSHOT.jar
eigenbase.jpg

重新打包Datax

build.jpg
打包成功。
PS:刚开始尝试在Windows下打包,未能成功。

<think>好的,用户想了解DataX编译版的使用方法。首先,我需要确认DataX的基本概念,确保自己理解正确。DataX是阿里开源的数据同步工具,支持多种数据源之间的数据传输。用户提到的是编译版,可能是指从源码自行编译的版本,而不是直接下载的二进制包。 接下来,用户可能需要知道编译和使用的具体步骤。首先,我应该回忆DataX的官方文档,确认编译所需的依赖和环境。通常,编译DataX需要Maven和JDK。需要检查版本是否兼容,比如Maven 3.x和JDK 1.8以上。 然后,编译步骤一般是克隆仓库,运行mvn命令。但要注意,可能需要跳过测试,因为有时候测试会失败。编译成功后,如何打包成可用的tar.gz文件,这也是关键步骤。用户可能遇到编译错误,需要提示常见问题,比如网络问题导致依赖下载失败,或者JDK版本不匹配。 接下来是使用部分,编译后的DataX和官方预编译版在使用上是否有区别。应该说明启动命令,job配置文件的结构,以及如何编写一个简单的同步任务示例。用户可能需要知道如何验证安装是否成功,比如运行自检脚本。 还要考虑用户可能的环境问题,比如PATH设置,权限问题,或者依赖缺失。例如,Python环境是否正确安装,因为DataX的部分脚本是用Python写的。另外,不同数据源的插件是否需要额外配置,或者编译时是否包含了所有插件。 用户可能的深层需求是希望自定义DataX,比如修改源码或添加插件,因此编译版可以满足这种需求。需要提到如果需要开发自定义插件,编译过程可能需要调整pom.xml文件,添加依赖。 最后,整理步骤,确保逻辑清晰,分步说明编译和使用的流程,注意事项,以及常见问题的解决方法。这样用户能逐步操作,避免遗漏关键点。同时,保持回答结构清晰,使用代码块和示例,方便用户复制命令。</think>DataX编译版使用指南(分步说明) 1. 环境准备 - JDK 1.8+(验证:`java -version`) - Maven 3.3.9+(验证:`mvn -v`) - Python 2.7(DataX部分脚本依赖) - 500MB+磁盘空间 2. 源码获取 ```bash git clone https://github.com/alibaba/DataX.git cd DataX ``` 3. 编译构建 ```bash # 核心编译命令(跳过测试) mvn -U clean package assembly:assembly -Dmaven.test.skip=true # 编译成功后提示: # [INFO] BUILD SUCCESS # 生成目录:target/datax-{version}.tar.gz ``` 4. 部署使用 ```bash # 解压编译产物 tar -zxvf target/datax-{version}.tar.gz cd datax # 验证安装 python bin/datax.py --version # 应输出版本信息 # 目录结构说明: ├── bin # 启动脚本 ├── conf # 全局配置 ├── job # 示例任务 ├── lib # 核心依赖库 ├── plugin # 各数据源插件 └── tmp # 临时文件 ``` 5. 编写配置文件(示例:mysql2mysql.json) ```json { "job": { "content": [{ "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "123456", "column": ["id","name"], "connection": [{ "table": ["users"], "jdbcUrl": ["jdbc:mysql://source-db:3306/db1"] }] } }, "writer": { "name": "mysqlwriter", "parameter": { "username": "root", "password": "123456", "column": ["id","name"], "connection": [{ "jdbcUrl": "jdbc:mysql://target-db:3306/db2", "table": ["users"] }] } } }] } } ``` 6. 执行同步任务 ```bash python bin/datax.py job/mysql2mysql.json ``` 常见问题排查: 1. 编译失败: - 检查Maven镜像配置(推荐阿里云镜像) - 确认网络畅通(需下载约200MB依赖) - 确保JDK版本正确 2. 运行时错误- 检查插件是否完整编译(查看plugin目录) - 确认数据库驱动版本匹配 - 增加JVM内存:修改bin/datax.py中的`-Xms1g -Xmx2g` 高级用法: 1. 自定义插件开发: - 在`plugin`目录新建模块 - 实现Reader/Writer接口 - 重新执行编译流程 2. 增量同步: ```json "reader": { "parameter": { "incrementalField": "update_time", "startTime": "2023-07-01 00:00:00" } } ``` 3. 限速配置: ```json "core": { "transport": { "channel": { "speed": { "byte": 1048576 } // 1MB/s } } } ``` 注意事项: 1. 编译时间约5-15分钟(依赖网络速度) 2. 推荐使用`-Pdebug`参数开发调试 3. 生产环境建议使用release版本 4. 注意不同插件的版本兼容性要求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值