一、全量同步

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实战相关推荐

  1. datax 模板_datax模板

    DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定高效的数据同步功能. 1. ...

  2. datax 模板_DataX引擎

    DataX 引擎 一.DataX简介 DataX是阿里巴巴发布的开源项目(详情请访问DataX的Github主页),是一个高效的离线数据同步工具,常用于异构数据源之间的数据同步. DataX采用的是F ...

  3. 5.过滤器作为模板——模板匹配、Matlab模板匹配实战_2

    目录 模板匹配 模板匹配实战 模板匹配 让我们继续探索使用过滤器作为模板的想法,我们想在二维空间中找到什么. 模板是你给我的东西,你说我想让你找到类似这样的东西,我们要通过过滤来做. 我想这是Chri ...

  4. datax 模板_dataX3.0安装使用手册.docx

    DataX3.0使用手册目录一.dataX概述11dataX作用12DataX3.0框架设计23DataX3.0插件体系2二.dataX安装31创建用户组及用户32环境变量配置43安装python4三 ...

  5. 策略模式、模板模式实战

    设计模式实战第一讲 本篇从实战代码角度详解策略模式.模板模式这两种设计模式. 简介 软件设计模式(Design pattern),又称设计模式,是一套被反复使用.多数人知晓的.经过分类编目的.代码设计 ...

  6. datax 高级_DATAx上海峰会-百格活动

    DATAx上海峰会由英国领先的会议主办方Innovation Enterprise倾力打造.前身为大数据与分析创新峰会,该峰会已在欧美的多个国家和地区成功举办近10年.今年,通过重新对品牌的思考和定义 ...

  7. Velocity模板引擎实战:动态生成HTML、Word、Excel等报表

    上篇文章介绍了Velocity的基本用法,文章链接:Java使用 VelocityEngine模板引擎快速生成HTML等各种代码 本篇文章主要针对Velocity的实际应用 先来一个工具类 packa ...

  8. 学术海报模板_实战高手教你如何设计裂变海报和详情页

    文章分享主要内容:海报设计4大原则:海报设计8要素:海报分享的5种动机:如何设计优秀海报:4大高转化详情页结构:4种分销路径详解:活动路径配置上线 第一个海报的设计原则第一点是九秒理论,什么是九秒理论 ...

  9. datax 高级_datax日志

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. python同名包_可以使用两个同名的Python包吗?
  2. 微软职位内部推荐-Senior Software Engineer
  3. SPCOMM的一些用法注意
  4. iOS病毒XcodeGhost批量检测工具,开源Github(检测ipa文件)
  5. php和python和java-python和java,php,c,c#,c++的对比
  6. php分享十五:php的数据库操作
  7. visual studio如何更改启动项目?
  8. SpringBoot2.x整合redis实战讲解
  9. mysql的join算法_mysql的Join算法-阿里云开发者社区
  10. 辗转相除法求最大公约数(c++)
  11. js中函数的使用方式及回调函数
  12. oracle把时间段转换成每一天_在家办公难适应?来看看专职外汇交易员的一天
  13. 高并发高可用的 架构实践
  14. Scala初步学习(三)
  15. 【OpenCV】简单高效地访问图像像素
  16. 音视频是怎样实现传输的
  17. 计算机自然语言处理的原理,什么是自然语言处理(NLP)?
  18. 开题报告的选题依据怎么写?
  19. 在线教育需要准备好哪些直播设备?
  20. 《教练型管理者》读书笔记-第2篇 【教练技能】

热门文章

  1. 刑事案件中,辩护律师具体能做什么?
  2. 做人的底线:不忘恩情,不失诚信,不伤人心
  3. 傻子都能看懂的 —— 详解欧拉公式推导
  4. 【transformer】DeiT
  5. Apache+Tomcat+Php+Mysql的集成
  6. html parent()属性,HTMLWindow.Parent 属性
  7. BZOJ 2955: [Poi2002]敌对球迷
  8. Graphics2D 中drawString()
  9. python书籍读后感_《Python深度学习》读书记录
  10. javascript前端开发最全面试题汇总