• 编译 datax


    datax 是阿里巴巴官方开源的一个数据同步工具,可以用于诸多数据源之间的同步,并且使用简单、效率高。

    datax 官方有提供编译好的版本,可以直接下载,但是其中包含有 BUG。

    我最近遇到的一个问题是,当从 MongoDB 同步数据到传统的结构化数据库时(如MySQL),会出现字段无法对齐的情况。

    举个例子。比如 MongoDB 中存在这样的一个 Collection:

    当同步到 mysql 后,会变成这样:

    明显的,它只是按顺序来映射到目标端,而并没有按字段名来做匹配。

    问题的解决:重新编译datax

    直接从 github 中下载 datax 的源码,本来我想只编译它的 mongodbreader 插件,但是一直报错,后来想想应该是要整个源码编译才行。

    cd 到 datax 目录内之后,官方提供了编译命令:

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

    直接编译是会出错的,会报几个依赖找不到,这是因为源码中的 pom.xml 文件里面设置的 maven 依赖使用的是旧版本,会有问题,所以需要一一修改。

    要修改的地方有 3 个:

    odpsreader/pom.xmlodpswriter/pom.xml

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

    otsstreamreader/pom.xml

    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>tablestore-streamclient</artifactId>
        <version>1.0.0</version>
    </dependency>
    

    修改完后,再执行打包命令:

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

    最终看到BUILD SUCCESS就表明打包成功了。生成的目标文件在datax/target/目录下

    参考:

    [1]. MongoDB 读取数据写入hdfs,丢失字段
    [2]. odps依赖包确实导致无法编译
    [3]. otsstreamreader插件pom依赖编译报错
    [4]. DataX userGuide

  • 相关阅读:
    【SDOI2014】数表
    【洛谷P4735】最大异或和
    FFT学习笔记
    【SHOI2008】堵塞的交通
    HDU 1754 I Hate It 线段树
    hdu 1166 敌兵布阵 ( 线段树或者树状数组)
    hdu 5339 Untitled dfs
    The mook jong
    hdu 5363 Key Set 快速幂
    HDU 1983 Kaitou Kid
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/compile_datax3_0.html
Copyright © 2020-2023  润新知