DataX编译笔记
DataX简介
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
获取源码
git clone git@github.com:alibaba/DataX.git
DataX 编译和使用环境
- Linux
- JDK(1.8以上,推荐1.8)
- Python(官方推荐
Python 2.6.X
,实测Python 2.7.X
可以正常编译) - Apache Maven 3.x (Compile DataX)
本文编译环境
名称 | 版本 |
---|---|
Mac OS X | 10.14.3 |
Java | 1.8.0_152 |
Maven | 3.5.0 |
Python | 2.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.xml
中tablestore-streamclient
版本信息,去掉-SNAPSHOT
就好,如:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>tablestore-streamclient</artifactId>
<version>1.0.0</version>
</dependency>
odpsreader里odps-sdk-core依赖问题
源码里odpsreader
中odps-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] ------------------------------------------------------------------------