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

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