千万级数据迁移工具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 git@github.com: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)

> 本文由作者pm1280415703:JAVA实验手册 发布,交流群:583284584!
千万级数据迁移工具DataX实践和geom类型扩展的更多相关文章
- mysql 千万级数据查询效率实践,分析 mysql查询优化实践--本文只做了一部分,仅供参考
数据量, 1300万的表加上112万的表 注意: 本文只做了部分优化,并不全面,仅供参考, 欢迎指点. 请移步tim查看,因为写的时候在tim写的,粘贴过来截图有问题,就直接上链接了. https ...
- 转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用
一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...
- mysql千万级数据量查询出所有重复的记录
查询重复的字段需要创建索引,多个条件则创建组合索引,各个条件的索引都存在则不必须创建组合索引 有些情况直接使用GROUP BY HAVING则能直接解决:但是有些情况下查询缓慢,则需要使用下面其他的方 ...
- MySQL百万级、千万级数据多表关联SQL语句调优
本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使百万级.千万级数据表关联查询第一页结果能在2秒内完成(真实业务告警系统优化结果).希望读者能够理解S ...
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案
如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案
- MySQL千万级数据分区存储及查询优化
作为传统的关系型数据库,MySQL因其体积小.速度快.总体拥有成本低受到中小企业的热捧,但是对于大数据量(百万级以上)的操作显得有些力不从心,这里我结合之前开发的一个web系统来介绍一下MySQL数据 ...
- Mysql千万级数据删除实操-企业案例
某天,在生产环节中,发现一个定时任务表,由于每次服务区查询这个表就会造成慢查询,给mysql服务器带来不少压力,经过分析,该表中绝对部分数据是垃圾数据 需要删除,约1050万行,由于缺乏处理大数据的额 ...
- 完全用nosql轻松打造千万级数据量的微博系统(转)
原文:http://www.cnblogs.com/imxiu/p/3505213.html 其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量 也并不是一千万条微博信 ...
随机推荐
- jquery (对内容,元素,属性,class的操作)
对内容的操作: 捕获:获得内容 text() - 设置或返回所选元素的文本内容html() - 设置或返回所选元素的内容(包括 HTML 标记)val() - 设置或返回表单字段的值. 设置:设置内容 ...
- .Net Core使用Ocelot网关(二) -鉴权认证
前言 上一章已经简单的介绍了ocelot的使用了,但是网关暴露的接口如果什么人都能访问的话安全性就太低啦.所以我们需要去鉴权和认证.这里我们使用identityServer4给我们的网关来鉴权认证. ...
- Docker swarm实战总结
一.简介 Swarm 是 Docker 官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker 资源 ...
- Appium移动端自动化测试--控件定位方法
常用定位手段 id Accessibility ID XPath 控件基础知识 DOM: Document Object Model文档对象模型 DOM应用:最早应用于HTML和Javascript的 ...
- DS-5新加交叉编译工具
Adding New Compiler Toolchains to DS-5 In this tutorial, you will learn how to add new compiler tool ...
- html5 中video标签属性
<video id="haoroomsvideo" src="haorooms.mp4" poster="images/haorooms.j ...
- [ASP.NET Core 3框架揭秘] 依赖注入[2]:IoC模式
正如我们在<依赖注入:控制反转>提到过的,很多人将IoC理解为一种"面向对象的设计模式",实际上IoC不仅与面向对象没有必然的联系,它自身甚至算不上是一种设计模式.一般 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Linux
如果想体验Linux环境下开发.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL ...
- 创建基于ASP.NET core 3.1 的RazorPagesMovie项目(二)-应用模型类配合基架生成工具生成Razor页面
本节中,将学习添加用于管理跨平台的SQLLite数据库中的电影的类Movie.从ASP.NET core 模板创建的应用使用SQLLite数据库. 应用模型类(Movie)配合Entity Frame ...
- Python面向对象-获取对象信息type()、isinstance()、dir()
type() type()函数用于判断对象类型: >>> type(11) <class 'int'> >>> type('abc') <clas ...