千万级数据迁移工具DataX实践和geom类型扩展

DataX快速入门参考

官方https://github.com/alibaba/DataX/blob/master/userGuid.md

环境要求

Linux
JDK(1.8以上,推荐1.8)
Python(推荐Python2.6.X)
Apache Maven 3.x (Compile DataX)

打包

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

本地idea调用

D:pmDataXdatax-coresrcmainjob为测试脚本文件夹
1、job.json 为通过streamreader生成模拟数据,streamwriter用于输出
2、jobmysqlreadtoprint.json 通过查询mysql数据,streamwriter用于输出
3、jobpostgresqltomysqlread_write.json 通过查询postgresql数据,写入mysql
4、jobpostgresqltopostgresqlread_write.json 通过查询postgresql数据,写入postgresql
5、jobpostgresqltopostgresqlreadwritegeom.json 通过查询postgresql数据,包含地理空间geometry类型数据,写入postgresql

数据包含geometry迁移

DataX本身不满足迁移地理空间geometry类型数据迁移

  • geometry类型数据迁移请移步 geometry
  • 在idea的Teminal执行以下脚本
    ~~~
    D:pmDataXdatax-coretargetdataxbin>python datax.py ../job/job.json -m standalone

cd D:pmDataXpython D:pmDataXdatax-coretargetdataxbindatax.py D:pmDataXdatax-coretargetdataxjobjobpgtopgxianzhuangjianzhugeomread_write.json -m standalone~~~

linux环境python 安装

下载

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz

安装依赖

~~~ shellyum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y~~~

解压

~~~ shelltar -zxvf Python-3.8.0.tgz~~~

切换目录

~~~cd Python-3.8.0~~~

编译安装

~~~1.释放编译文件makefile,这makefile就是用来编译且安装的./configure --prefix=/usr/local/soft/python380/ 注释:--prefix 指定软件的安装路径2.开始编译
 make3.编译且安装make install~~~

配置环境变量

~~~1.vi /etc/profile
2.写在最后
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/soft/python380/bin
保存退出 :wq!3.生效source /etc/profile~~~

如有必要更新pip

~~~pip3 install --upgrade pip~~~

window环境python 安装

python以及idea插件安装请自行百度

JDK1.8安装

~~~yum install java-1.8.0-openjdk* -y~~~

DataX 使用

方法一

下载 http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

cd {YOURDATAXHOME}/bin
python datax.py {YOUR_JOB.json}

自检脚本:
python {YOURDATAXHOME}/bin/datax.py {YOURDATAXHOME}/job/job.json

方法二

下载DataX源码,自己编译

  • (1)、下载DataX源码:

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

  • 通过maven打包:

$ cd {DataXsourcecode_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
打包成功后的DataX包位于 {DataXsourcecode_home}/target/datax/datax/

  • 第二步:启动DataX

$ cd {YOURDATAXDIR_BIN}
$ python datax.py ./stream2stream.json

问题

字段类型问题

postgresql "geom" "public"."geometry"
因为DataX 不支持数据库读取这种字段类型. 字段名:[geom], 字段名称:[1111], 字段Java类型:[java.lang.Object]. 请尝试使用数据库函数将其转换datax支持的类型 或者不同步该字段
因为DataX 不支持数据库写入这种字段类型. 字段名:[geom], 字段类型:[1111], 字段Java类型:[geometry]. 请修改表中该字段的类型或者不同步该字段

您的配置文件中的列配置信息有误. 因为DataX 不支持数据库读取这种字段类型. 字段名:[%s], 字段名称:[%s], 字段Java类型:[%s]. 请尝试使用数据库函数将其转换datax支持的类型 或者不同步该字段 .

  • geometry类型数据迁移请移步 geometry

效果对比

  • 通过DataX本地运行,迁移postgresql 包含geometry空间类型数据1088270条,用时1111s

通道数量 : 8
任务启动时刻 : 2019-12-09 12:52:02任务结束时刻 : 2019-12-09 13:10:34任务总计耗时 : 1111s任务平均流量 : 517.35KB/s记录写入速度 : 980rec/s读出记录总数 : 1088270读写失败总数 : 0

  • 通过Navacat复制数据表,迁移postgresql 包含geometry空间类型数据1088270条,用时1917.623s

geometry类型数据迁移

  • geometry类型数据迁移请移步 geometry
    千万级数据迁移工具DataX实践和geom类型扩展_第1张图片

本文由作者pm1280415703:JAVA实验手册 发布,交流群:583284584!

你可能感兴趣的:(K8S,Docker,微服务)