datax3.0打包編譯問題

一、下載源碼

git clone [email protected]:alibaba/DataX.git

二、編譯命令

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

三、存在問題:

1、使用公司的倉庫,打包報錯,找不到一些jar包,錯誤信息:

[ERROR] Failed to execute goal on project hdfsreader: Could not resolve dependencies for project com.alibaba.datax:hdfsreader:jar:0.0.1-SNAPSHOT: The following artifacts could not be resolved: org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde, eigenbase:eigenbase-properties:jar:1.1.4: Could not find artifact org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde in nexus-public (http://nexus.xx.xx.cn/repository/maven-public/) -> [Help 1]
2、嘗試解決方法:

2.1修改maven倉庫鏡像,$用戶名/.m2/settings.xml中修改鏡像地址

<mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
    <mirror>
        <id>repo1</id>
        <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <url>http://repo1.maven.org/maven2/</url>
    </mirror>
    <mirror>
        <id>repo2</id>
        <mirrorOf>central</mirrorOf>
        <name>Human Readable Name for this Mirror.</name>
        <url>http://repo2.maven.org/maven2/</url>
    </mirror>

再次打包,依然報同樣的錯誤,嘗試reimport maven、rebuild project ,但是不行

2.2 查看自己的maven安裝目錄,conf/settings.xml文件依然配置是公司的鏡像,mv settings.xml settings.xml.bak文件,再次打包,成功了。

3、問題總結,看來打包時還是讀取了maven 環境下的settings.xml裏面的鏡像,儘管工程裏面配置的是./m2/settings/xml路徑

4、問題起因,是要解決,datax同步oss數據到mysql,null值不能轉換爲long類型,報錯信息:

CONSOLE# 2020-05-28 14:48:08.917 [0-0-1-reader] ERROR StdoutPluginCollector - 髒數據:

CONSOLE# {"message":"類型轉換錯誤, 無法將[\\N] 轉換爲[LONG]","record":[{"byteSize":32,

4.1、網上的解決方案是修改datax源碼plugin-unstructured-storage-util下的UnstructuredStorageReaderUtil.class

加上一個判斷,因爲在hdfs中,null值存儲的是 \N ,所以需要把它轉換成 null存儲到Mysql中 

然後重新打包,所以遇到了打包問題失敗問題。

網上嘗試加 "nullFormat":"null", 如

 "encoding":"utf-8",
                    "fieldDelimiter":",",
                    "nullFormat":"null",
                    "path":[
                       .......
                    ]

但是沒有嘗試成功,於是就該了底層源碼,然後把ossreader/lib下的plugin-unstructured-storage-util-0.0.1-SNAPSHOT.jar替換成最新的編譯jar,成功了

參考:https://blog.csdn.net/qq_33792843/article/details/91987903

https://blog.csdn.net/qq_32447301/article/details/82909326

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章