datax 模板_datax实战
一、全量同步
1.简单字段同步
本文以mysql -> mysql为示例:
本次测试的表为mysql的系统库-sakila中的actor表,由于不支持目的端自动建表,此处预先建立目的表:
CREATE TABLE`actor_copy` (
`actor_id`smallint(5) unsigned NOT NULLAUTO_INCREMENT,
`first_name`varchar(45) NOT NULL,
`last_name`varchar(45) NOT NULL,
`last_update`timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY(`actor_id`),KEY`idx_actor_last_name` (`last_name`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8;
通过官方快速开始提供的命令,可以查看配置模板:
python datax.py -r {YOUR_READER} -w{YOUR_WRITER}
python datax.py-r streamreader -w streamwriter
打开dataX的mysqlreader以及mysqlwriter文档,编写JSON配置文件:(此处经过试验,即使是自增主键,同样需要配置,否则会报输入输出不匹配的错),加上JSON配置文件的x权限:
{
"job": {
"setting": {
"speed": {
"channel": 3
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "Zcc170821#",
"column": [
"actor_id",
"first_name",
"last_name",
"last_update"
],
"splitPk": "actor_id",
"connection": [
{
"table": [
"actor"
],
"jdbcUrl": [
"jdbc:mysql://192.168.19.129:3306/sakila"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"writeMode": "insert",
"username": "root",
"password": "Zcc170821#",
"column": [
"actor_id",
"first_name",
"last_name",
"last_update"
],
"preSql": [
"truncate table actor_copy"
],
"connection": [
{
"jdbcUrl": "jdbc:mysql://192.168.19.129:3306/sakila",
"table": [
"actor_copy"
]
}
]
}
}
}
]
}
}
这样,单表的最基本全量同步就完成了!
通过python 命令运行即可:
python datax.py ../job/mysqltest.json
2.增加常量与插入时间字段
原表正常字段,目标表多出两列:来源部门,插入时间。json配置如下:
常量使用单引号,时间暂时未摸索到变量如何使用(以下通过启动脚本已更新方式),通过时间函数实现
{"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}
},"content": [
{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "root","column": ["actor_id","first_name","last_name","last_update","'自动生成'","NOW()"],"splitPk": "actor_id","connection": [
{"table": ["actor"],"jdbcUrl": ["jdbc:mysql://hadoop01:3306/sakila"]
}
]
}
},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "root","column": ["actor_id","first_name","last_name","last_update","src","load_time"],"preSql": ["truncate table actor_copy"],"connection": [
{"jdbcUrl": "jdbc:mysql://hadoop01:3306/sakila","table": ["actor_copy"]
}
]
}
}
}
]
}
}
2020.1.11,更新通过启动脚本控制时间戳:
首先Json配置更改为变量:(注意变量有个单引号!)
{"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}
},"content": [
{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "root","column": ["actor_id","first_name","last_name","last_update","'${src}'","'${systime}'"],"splitPk": "actor_id","connection": [
{"table": ["actor"],"jdbcUrl": ["jdbc:mysql://hadoop01:3306/sakila"]
}
]
}
},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "root","column": ["actor_id","first_name","last_name","last_update","src","load_time"],"preSql": ["truncate table actor_copy"],"connection": [
{"jdbcUrl": "jdbc:mysql://hadoop01:3306/sakila","table": ["actor_copy"]
}
]
}
}
}
]
}
}
在datax的srcipts文件下新建一个启动脚本:
#coding:UTF-8
from datetime importdatetimeimportosimportsys
configFilePath= sys.argv[1]
src= '自动生成'currentTime= format(datetime.now(), '%Y-%m-%d %H:%M:%S')
script2execute= "python /opt/datax/bin/datax.py {0} -p \"-Dsrc='{1}' -Dsystime='{2}'\"".format( configFilePath, src, currentTime)
os.system(script2execute)
在srcipts下的启动命令为:
python ./datax_start.py '/opt/datax/job/mysql_actor_copy_arg.json'
二、增量同步
增量同步的核心思路是时间戳,需要同步的表中要有Update_time字段:
增量数据和全量数据如何合并?使用full join
当然如果有例如更新时间,修改时间字段,可以直接将增量表INTO入昨日全量,然后根据ID去重,取最新时间也是可以的
datax 模板_datax实战相关推荐
- datax 模板_datax模板
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定高效的数据同步功能. 1. ...
- datax 模板_DataX引擎
DataX 引擎 一.DataX简介 DataX是阿里巴巴发布的开源项目(详情请访问DataX的Github主页),是一个高效的离线数据同步工具,常用于异构数据源之间的数据同步. DataX采用的是F ...
- 5.过滤器作为模板——模板匹配、Matlab模板匹配实战_2
目录 模板匹配 模板匹配实战 模板匹配 让我们继续探索使用过滤器作为模板的想法,我们想在二维空间中找到什么. 模板是你给我的东西,你说我想让你找到类似这样的东西,我们要通过过滤来做. 我想这是Chri ...
- datax 模板_dataX3.0安装使用手册.docx
DataX3.0使用手册目录一.dataX概述11dataX作用12DataX3.0框架设计23DataX3.0插件体系2二.dataX安装31创建用户组及用户32环境变量配置43安装python4三 ...
- 策略模式、模板模式实战
设计模式实战第一讲 本篇从实战代码角度详解策略模式.模板模式这两种设计模式. 简介 软件设计模式(Design pattern),又称设计模式,是一套被反复使用.多数人知晓的.经过分类编目的.代码设计 ...
- datax 高级_DATAx上海峰会-百格活动
DATAx上海峰会由英国领先的会议主办方Innovation Enterprise倾力打造.前身为大数据与分析创新峰会,该峰会已在欧美的多个国家和地区成功举办近10年.今年,通过重新对品牌的思考和定义 ...
- Velocity模板引擎实战:动态生成HTML、Word、Excel等报表
上篇文章介绍了Velocity的基本用法,文章链接:Java使用 VelocityEngine模板引擎快速生成HTML等各种代码 本篇文章主要针对Velocity的实际应用 先来一个工具类 packa ...
- 学术海报模板_实战高手教你如何设计裂变海报和详情页
文章分享主要内容:海报设计4大原则:海报设计8要素:海报分享的5种动机:如何设计优秀海报:4大高转化详情页结构:4种分销路径详解:活动路径配置上线 第一个海报的设计原则第一点是九秒理论,什么是九秒理论 ...
- datax 高级_datax日志
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
最新文章
- python同名包_可以使用两个同名的Python包吗?
- 微软职位内部推荐-Senior Software Engineer
- SPCOMM的一些用法注意
- iOS病毒XcodeGhost批量检测工具,开源Github(检测ipa文件)
- php和python和java-python和java,php,c,c#,c++的对比
- php分享十五:php的数据库操作
- visual studio如何更改启动项目?
- SpringBoot2.x整合redis实战讲解
- mysql的join算法_mysql的Join算法-阿里云开发者社区
- 辗转相除法求最大公约数(c++)
- js中函数的使用方式及回调函数
- oracle把时间段转换成每一天_在家办公难适应?来看看专职外汇交易员的一天
- 高并发高可用的 架构实践
- Scala初步学习(三)
- 【OpenCV】简单高效地访问图像像素
- 音视频是怎样实现传输的
- 计算机自然语言处理的原理,什么是自然语言处理(NLP)?
- 开题报告的选题依据怎么写?
- 在线教育需要准备好哪些直播设备?
- 《教练型管理者》读书笔记-第2篇 【教练技能】
热门文章
- 刑事案件中,辩护律师具体能做什么?
- 做人的底线:不忘恩情,不失诚信,不伤人心
- 傻子都能看懂的 —— 详解欧拉公式推导
- 【transformer】DeiT
- Apache+Tomcat+Php+Mysql的集成
- html parent()属性,HTMLWindow.Parent 属性
- BZOJ 2955: [Poi2002]敌对球迷
- Graphics2D 中drawString()
- python书籍读后感_《Python深度学习》读书记录
- javascript前端开发最全面试题汇总