千万级数据迁移工具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:\pm\DataX\datax-core\src\main\job为测试脚本文件夹 1、job.json 为通过streamreader生成模拟数据,streamwriter用于输出 2、job_mysql_read_to_print.json 通过查询mysql数据,streamwriter用于输出 3、job_postgresql_to_mysql_read_write.json 通过查询postgresql数据,写入mysql 4、job_postgresql_to_postgresql_read_write.json 通过查询postgresql数据,写入postgresql 5、job_postgresql_to_postgresql_read_write_geom.json 通过查询postgresql数据,包含地理空间geometry类型数据,写入postgresql ## 数据包含geometry迁移 > DataX本身不满足迁移地理空间geometry类型数据迁移 * geometry类型数据迁移请移步 [geometry](https://t.zsxq.com/7MFqJIm) * 在idea的Teminal执行以下脚本 ~~~ D:\pm\DataX\datax-core\target\datax\bin>python datax.py ../job/job.json -m standalone cd D:\pm\DataX\ python D:\pm\DataX\datax-core\target\datax\bin\datax.py D:\pm\DataX\datax-core\target\datax\job\job_pg_to_pg_xianzhuangjianzhu_geom_read_write.json -m standalone ~~~ ## linux环境python 安装 ### 下载 wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz ### 安装依赖 ~~~ shell yum 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 ~~~ ### 解压 ~~~ shell tar -zxvf Python-3.8.0.tgz ~~~ ### 切换目录 ~~~ cd Python-3.8.0 ~~~ ### 编译安装 ~~~ 1.释放编译文件makefile,这makefile就是用来编译且安装的 ./configure --prefix=/usr/local/soft/python380/ 注释:--prefix 指定软件的安装路径 2.开始编译  make 3.编译且安装 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 {YOUR_DATAX_HOME}/bin python datax.py {YOUR_JOB.json} > 自检脚本: python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json ### 方法二 > 下载DataX源码,自己编译 * (1)、下载DataX源码: > git clone [email protected]:alibaba/DataX.git * 通过maven打包: > $ cd {DataX_source_code_home} $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true 打包成功后的DataX包位于 {DataX_source_code_home}/target/datax/datax/ * 第二步:启动DataX > $ cd {YOUR_DATAX_DIR_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](https://t.zsxq.com/7MFqJIm) ##效果对比 * 通过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](https://t.zsxq.com/7MFqJIm) ![geometry](https://img2018.cnblogs.com/blog/371047/201912/371047-20191209152817831-1477643829.webp) > 本文由作者pm1280415703:JAVA实验手册 发布,交流群:583284584!

猜你喜欢

转载自www.cnblogs.com/pm0101/p/12011288.html
今日推荐