datax

开源异构数据库同步工具收集

£可爱£侵袭症+ 提交于 2020-01-22 16:25:49
SymmetricDS 太麻烦,而且是每张表都要配置触发器,性能影响太大了。 其他类型数据库到GP: 转自:https://blog.csdn.net/inrgihc/article/details/103739629 一、背景 开源MPP数据库Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,其架构专门用于管理大规模分析数据仓库,Greenplum主要定位在OLAP领域,利用Greenplum MPP数据库做大数据计算或分析平台非常适合,典型的就是数据仓库系统。 虽然Greenplum支持JDBC 、libpg、copy、gpfdist等多种方式加载数据。但是通常的业务系统中的数据存储往往是MySQL、Oracle、SQLServer、PostegreSQL等数据库。要想把这些数据库中的数据导入至Greenplum数据库中,需要借助一定的(离线同步)工具,典型的工具包括: (1)利用kettle+gpload工具 优点:工具开源且现成,导入速度快,kettle支持表结构同步和表数据同步; 缺点:gpload配置过于复杂,kettle功能多,学习成本高,每张表都需要单独配置,不适用于大批量表的操作; (2)使用Greenplum工具gpfdist或外部表方式 优点:导入速度快 缺点:需要先将MySQL、Oracle

DataX 整合后重新编译打包

落花浮王杯 提交于 2020-01-19 13:10:35
一、在CentOS中重新编译打包 安装Maven: wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo yum -y install apache-maven 下载源码: git clone https://github.com/alibaba/DataX.git 修改代码后,重新编译打包 mvn clean package -DskipTests assembly:assembly 编译打包后的都放在target下,例如: /usr/local/DataX/mysqlwriter/target/datax/plugin/writer/mysqlwriter 二、在IDEA中重新打包 重新编译打包时,可以把pom.xml文件中的不用的先注掉,这样编译打包会快一些 来源: https://www.cnblogs.com/kgdxpr/p/12213183.html

AttributeError: 'PurePosixPath' object has no attribute 'open'

柔情痞子 提交于 2019-12-19 12:04:32
python常用地方记录 1.绝对路径 python3.4出的新功能: pathlib—面向对象的文件系统路径 拉到页面最下面可以看到与os.path映射的相同功能。 原先获取命令目录与工作目录需要导入os与sys俩模块,现在统一到pathlib.Path下; 不知道还有其他表达方式么,没有的话以后尽量用pathlib模块处理 文件路径及目录 问题了。 最基础常用的当前文件所在绝对路径,而非当前工作路径,应当予以区别: import os import sys cwd = os . getcwd ( ) # 当前工作目录 print ( cwd ) FILE_PATH = sys . path [ 0 ] # 当前文件目录 print ( FILE_PATH ) from pathlib import * # 导入pathlib的所有子包 cwd = Path . cwd ( ) # 当前工作目录 print ( cwd ) WF = Path ( __file__ ) # 当前文件 WD = WF . resolve ( ) . parent # 当前文件所在目录(当前文件绝对路径的上级目录) print ( WD ) 测试效果: [ root@ansible - server script ] # python3 dir_test.py / opt / datax /

DataX编译笔记

旧城冷巷雨未停 提交于 2019-12-13 22:01:06
DataX编译笔记 DataX简介 获取源码 DataX 编译和使用环境 本文编译环境 编译DataX常见问题 Maven 仓库配置问题 tablestore-streamclient版本问题 odpsreader里odps-sdk-core依赖问题 Maven打包编译 参考 DataX简介 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 获取源码 git clone git@github.com:alibaba/DataX.git DataX 编译和使用环境 Linux JDK(1.8以上,推荐1.8) Python (官方推荐 Python 2.6.X ,实测 Python 2.7.X 可以正常编译) Apache Maven 3.x (Compile DataX) 本文编译环境 名称 版本 Mac OS X 10.14.3 Java 1.8.0_152 Maven 3.5.0 Python 2.7.10 编译DataX常见问题 Maven 仓库配置问题 DataX 目前支持相当丰富的数据读写插件,这也导致依赖复杂度增加,所以使用推荐配置多个仓库,防止 Maven 编译过程中找不到Jar包

数据集成工具Kettle、Sqoop、DataX的比较

耗尽温柔 提交于 2019-12-11 16:26:43
数据集成工具很多,下面是几个使用比较多的开源工具。 1、阿里开源软件:DataX DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 2、Apache开源软件:Sqoop Sqoop(发音:skup)是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。(摘自百科) 3、Kettle开源软件:水壶(中文名) Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。 Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。 Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。 Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换

DATAX 异构数据源离线同步工具

有些话、适合烂在心里 提交于 2019-12-10 15:05:27
DATAX 相关了解 简介 ​DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能 设计理念 ​为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。 使用步骤 下载datax的安装包 下载地址 解压gz包 运行解压命令,我这里解压到home目录 tar -zxvf ./datax.tar.gz linux解压以后目录有 bin conf job lib log log_perf plugin script tmp 参考我自己配置的job.json( 注意参考使用的时候,去除注释) { "job": { "setting": { "speed": { "channel": 15, "record":-1, "byte":-1, "batchSize":2048 } }, "content": [ { "reader": { "name": "oraclereader", "parameter": { "username": "xxxx", "password": "xxxx"

datax同步emoji表情到mysql报错

送分小仙女□ 提交于 2019-12-06 13:48:05
前期已经通过msyql客户端(黑窗口)修改了mysql的编码和字符集, mysql中已经可以插入emoji表情,但是通过数据同步(datax),从hive同步emoji表情到mysql报错: 解决方案: -- 修改mysql配置文件 vim /etc/my.cnf -- 添加如下内容 [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' -- 重启mysqld systemctl restart mysqld.service -- 查看myqld运行状态,保证重启之后的mysql正常运行 service mysqld status -- 建库 CREATE DATABASE `xcdqm` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; -- 建表 CREATE TABLE `test_emoji` ( `id` int(11) DEFAULT NULL, `emoji` varchar(1000) COLLATE

datax 学习了解

老子叫甜甜 提交于 2019-12-06 06:03:06
参考学习路径 参考 https://www.cnblogs.com/Java-Starter/p/10869324.html https://www.imooc.com/article/265952 https://www.imooc.com/article/259830 https://www.imooc.com/article/details/id/50892 https://www.imooc.com/article/45108 B站的 https://search.bilibili.com/video?keyword=datax https://www.bilibili.com/video/av75226648?from=search&seid=8848553852603897194 job demo sliceRecordCount: 100000 表示 将数据 发送 10W次到 streamreader 里面 setting 必须有, 但是 setting 里面可以没有内容。 一般配置speed 或者 channel 注意 如果是 stream的话 channel 设置多少次就会 重复执行多少遍。 比如 channel=2 ,如果 ssliceRecordCount: 10 ,那么最终会 执行 20次 。正常应该是 10次的 speed 里面的 byte 意思是

MGR多线程复制hangs

一笑奈何 提交于 2019-12-06 04:16:17
1.故障现象 20191113-22:32 datax全量同步t_shop_info表到 eorder所在的实例,t_shop_info表有两个唯一约束。总数据量不超过1w行,同步完成后MGR从库复制线程死锁。导致同步停止,影响业务。 从库processlist 截图 2.故障复现 2.1 集群环境 MGR集群ip 端口 10.204.55.205 3320 10.204.55.206 3320 10.204.55.207 3320 2.2 复现方法1 ,使用datax全量同步。 集群主要参数配置 SET GLOBAL slave_parallel_type = 'LOGICAL_CLOCK'; SET GLOBAL slave_parallel_workers = 16; SET GLOBAL slave_preserve_commit_order = ON; 用datax启动 replace into方式全量同步t_shop_info表到MGR测试集群。 结果:任务启动第二次从库复制线程必定hangs。 用datax启动 DUPLICATE KEY UPDATE 方式全量同步t_shop_info表到MGR测试集群 结果:任务启动5次都没有出现从库复制线程hangs。 2.3 复现方法2, 使用 jmeter 并发40线程并行执行sql。 集群主要参数 SET GLOBAL

datax分析与思考(一)

为君一笑 提交于 2019-12-03 04:52:58
Datax 总体流程图 先看执行的第一个步骤: 在最上层抽象类,这个里面相当于获取全局公共信息,java入口部分就是这个Engine的main方法直接启动 Engine 启动 com.alibaba.datax.core.Engine#main直接启动 阿里这边有提供多级JSON配置信息无损存储 com.alibaba.datax.common.util.Configuration 但是平常的使用中很少有直接以json的格式操作,一般是转成对象bean,然后进行操作, 他在这边新写这个方法的目的主要在于对封闭的json进行处理,直接从key获取到value,但是我感觉还是可以直接转成bean的形式去获取比较方便.毕竟只有一个json的文件 直接main方法启动,在datax.py脚本中设置了锁需要的参数和json地址, 在启动的时候通过读取启动参数,获取到当前的启动配置文件. 这边阿里使用了 <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.3.1</version> </dependency> 这个包 ,然后使用 Options options = new Options(); options.addOption("job", true, "Job