zoukankan      html  css  js  c++  java
  • 编译 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

  • 相关阅读:
    spring boot 报错 Failed to read HTTP message
    spring boot 之 Mybatis 配置
    Java生成xlsx格式的excel文件
    遍历FTP目录及下载
    Spring 报错
    git ssh key生成
    spring mvc原理
    LightOJ 1154
    Light OJ 1153
    入栈出栈的顺序问题
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/compile_datax3_0.html
Copyright © 2011-2022 走看看