DataX編譯筆記
DataX簡介
DataX 是阿里巴巴集團內被廣泛使用的離線數據同步工具/平臺,實現包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各種異構數據源之間高效的數據同步功能。
獲取源碼
git clone [email protected]: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] ------------------------------------------------------------------------