一、前言

  【写在最前】内容更新范围,欢迎交流进步!
  最早参照下面两篇博客的DataX包的下载地址安装:https://blog.csdn.net/a924382407/article/details/120952339https://blog.csdn.net/qq_43523503/article/details/114424420
  但是安装完之后,集成MongoDB数据,出现Hive数据错位现象——MongoDB缺失值的字段,被下个字段值补充。查看源码,处理了这种情况,怀疑安装包问题,所以编译源码安装,写这篇文章供大家交流!
  写完文章发现github下载地址修改为:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202210/datax.tar.gz(经测,以上bug不存在),不管怎样,这篇文章我水定了。

二、编译安装

2.1 克隆

hadoop@testmaster:~/app$ git clone https://github.com/alibaba/DataX.git

2.2 编译

hadoop@testmaster:~/app$ cd DataX/
hadoop@testmaster:~/app/DataX$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true

  出现下列信息,编译成功,如遇编译报错,百度安装对应依赖即可。
在这里插入图片描述

2.3 部署

hadoop@testmaster:~/app/DataX/target$ scp datax.tar.gz testslave01:/home/hadoop/app/
hadoop@testmaster:~/app/DataX/target$ scp datax.tar.gz testslave02:/home/hadoop/app/
hadoop@testmaster:~/app/DataX/target$ scp datax.tar.gz testslave03:/home/hadoop/app/
# 切换机器,解压安装
hadoop@testslave01:~/app$ tar -xzvf datax.tar.gz -C ../software/
hadoop@testslave02:~/app$ tar -xzvf datax.tar.gz -C ../software/
hadoop@testslave03:~/app$ tar -xzvf datax.tar.gz -C ../software/

2.4 测试

hadoop@testslave03:~/app$ cd ../software/datax
hadoop@testslave03:~/software/datax$ pwd
/home/hadoop/software/datax
hadoop@testslave03:~/software/datax$ ./bin/datax.py ./job/job.json

在这里插入图片描述
  安装成功,出现如上报错,可以按https://blog.csdn.net/chrisy521/article/details/122033748修改对应值,作者不建议修改,不影响DolphinScheduler调度任务使用,json脚本内设置bps限速参数即可。

三、JVM内存实践

hadoop@testslave03:~/software/datax$ vim ./bin/datax.py
# 按如下规则修改内存,分发到其他节点
hadoop@testslave03:~/software/datax$ scp ./bin/datax.py testslave02:/home/hadoop/software/datax/bin/
hadoop@testslave03:~/software/datax$ scp ./bin/datax.py testslave01:/home/hadoop/software/datax/bin/

在这里插入图片描述
  默认最大堆内存是1g,实践经验:最大堆内存跟channel强相关,但也跟抽取数据库源端CPU、内存相关,最优的channel个数与CPU核数相同,一个channel对应512M内存,依据最大channel数,设置最大堆内存大小=channelNum * 512M。(抛开带宽等其他条件来说)

四、预告

  下篇文章讲解修改mongodbreader的源码,新增两个数据类型,以支持字段document类型转json及array< document >类型转array< json >,从而支持Hive的get_json_object函数对数据的解析。
目前DataX支持转换的MongoDB数据类型:

DataX 内部类型MongoDB 数据类型
Longint, Long
Doubledouble
Stringstring, array
Datedate
Booleanboolean
Bytesbytes
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐