DataX编译笔记

DataX编译指南

DataX简介

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

获取源码

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

DataX 编译和使用环境

本文编译环境

名称版本
Mac OS X10.14.3
Java1.8.0_152
Maven3.5.0
Python2.7.10

编译DataX常见问题

Maven 仓库配置问题

DataX目前支持相当丰富的数据读写插件,这也导致依赖复杂度增加,所以使用推荐配置多个仓库,防止Maven编译过程中找不到Jar包,如在编译hdfsreader插件时可能会遇到eigenbase-properties:jar:1.1.4 is missing异常,阿里云maven central库不存在eigenbase-properties-1.1.4版本。在编译过程中遇到缺少或找不到Jar包源时可以先查一下仓库中是否存在,如阿里云maven仓库查询

推荐如下仓库配置(参考: DataX Maven编译异常issue):

:配置文件settings.xml位于:$M2_HOME/conf/settings.xml或个人配置~/.m2/settings.xml

<mirrors>
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>
        <!-- 中央仓库1 -->
        <mirror>
            <id>repo1</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo1.maven.org/maven2/</url>
        </mirror>
        <!-- 中央仓库2 -->
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
</mirrors>
tablestore-streamclient版本问题

编译otsstreamreader模块时如果遇到com.aliyun.openservices:tablestore-streamclient:jar问题时,可以修改otsstreamreader/pom.xmltablestore-streamclient 版本信息,去掉-SNAPSHOT就好,如:

        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>tablestore-streamclient</artifactId>
            <version>1.0.0</version>
        </dependency>
odpsreader里odps-sdk-core依赖问题

源码里odpsreaderodps-sdk-core版本较低,在编译odpsreader插件过程中会报莫名奇妙的问题,有网友指这个版本依赖传递依赖含有阿里内部jar,外部仓库无法加载这个jar。后续版本可能会Fix这个问题,如果遇到odpsreader模块编译问题,建议升级odps-sdk-core版本试一下,可以到阿里云maven仓库 找最新版的sdk版本,并修改文件odpsreader/pom.xml,升级odps-sdk-core至最新版,例如下:

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

Maven打包编译

建议打包时跳过测试,如:

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

打包成功日志:

[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 07:26 min
[INFO] Finished at: 2019-12-09T11:24:18+08:00
[INFO] Final Memory: 556M/1259M
[INFO] ------------------------------------------------------------------------

参考

1.DataX源码打包编译采坑记

2.阿里巴巴同步插件Datax编译打包-maven

<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. 注意不同插件的版本兼容性要求
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值