DataX 是阿里云 DataWorks数据集成的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。
DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。

1.场景:

这里演示使用DataX实现从mysql抽取数据到stream中。

2.编译Datax:

​ DataX本身没有编译好的releases,所以在使用DataX时,需要自己编译。可以根据业务场景和减少编译时间,将DataX中其他不需要的模块注释掉,本文在这里演示时只需要mysqlreader和streamreader,故而将其他模块注释掉。

2.1 git clone
git clone https://github.com/alibaba/DataX.git
cd {DataX_source_code_home} #你clone下来datax的源码目录
vim pom.xml

​ 以上我只保留了mysqlreader,streamreader和hdfsreader。

2.2编译:
mvn -U clean package assembly:assembly -Dmaven.test.skip=true

3.基础使用:

编译成功的datax在源码目录下的/target/datax/datax/中。

cd {DataX_source_code_home}/target/datax/datax/

通过以下命令可以查看配置信息:

 python datax.py -r streamreader -w streamwriter

3.1创建第一个stream2stream.json文件 :

vim  stream2stream.json
{"job": {"content": [{"reader": {"name": "streamreader","parameter": {"sliceRecordCount": 10,"column": [{"type": "long","value": "10"},{"type": "string","value": "DataX第一个测试文件"}]}},"writer": {"name": "streamwriter","parameter": {"encoding": "UTF-8","print": true}}}],"setting": {"speed": {"channel": 1}}}
}

启动DataX:

cd {DataX_source_code_home}/target/datax/datax/bin/
python datax.py ./stream2stream.json

执行结果如下:

2021-12-17 14:52:21.929 [job-0] INFO  JobContainer -
任务启动时刻                    : 2021-12-17 14:52:11
任务结束时刻                    : 2021-12-17 14:52:21
任务总计耗时                    :                 10s
任务平均流量                    :               95B/s
记录写入速度                    :              5rec/s
读出记录总数                    :                  50
读写失败总数                    :                   0

3.2 创建第二个mysql2stream.json文件:

首先在mysql中创建数据库表和样例数据:

CREATE TABLE `order_analysis` (`date` varchar(19) DEFAULT NULL,`user_src` varchar(9) DEFAULT NULL,`order_src` varchar(11) DEFAULT NULL,`order_location` varchar(2) DEFAULT NULL,`new_order` int DEFAULT NULL,`payed_order` int DEFAULT NULL,`pending_order` int DEFAULT NULL,`cancel_order` int DEFAULT NULL,`reject_order` int DEFAULT NULL,`good_order` int DEFAULT NULL,`report_order` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-12 00:00:00', '广告二维码', 'Android APP', '上海', 15253, 13210, 684, 1247, 1000, 10824, 862);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-14 00:00:00', '微信朋友圈H5页面', 'iOS APP', '广州', 17134, 11270, 549, 204, 224, 10234, 773);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-17 00:00:00', '地推二维码扫描', 'iOS APP', '北京', 16061, 9418, 1220, 1247, 458, 13877, 749);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-17 00:00:00', '微信朋友圈H5页面', '微信公众号', '武汉', 12749, 11127, 1773, 6, 5, 9874, 678);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-18 00:00:00', '地推二维码扫描', 'iOS APP', '上海', 13086, 15882, 1727, 1764, 1429, 12501, 625);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-18 00:00:00', '微信朋友圈H5页面', 'iOS APP', '武汉', 15129, 15598, 1204, 1295, 1831, 11500, 320);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-19 00:00:00', '地推二维码扫描', 'Android APP', '杭州', 20687, 18526, 1398, 550, 213, 12911, 185);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-19 00:00:00', '应用商店', '微信公众号', '武汉', 12388, 11422, 702, 106, 158, 5820, 474);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-20 00:00:00', '微信朋友圈H5页面', '微信公众号', '上海', 14298, 11682, 1880, 582, 154, 7348, 354);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-21 00:00:00', '地推二维码扫描', 'Android APP', '深圳', 22079, 14333, 5565, 1742, 439, 8246, 211);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-22 00:00:00', 'UC浏览器引流', 'iOS APP', '上海', 28968, 18151, 7212, 2373, 1232, 10739, 578);

创建json文件:

python datax.py -r mysqlreader -w streamwriter

vim mysql2stream.json

{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"column": ["date","user_src","order_src","order_location","new_order","payed_order"," pending_order"," cancel_order"," reject_order"," good_order"," report_order"],"connection": [{"jdbcUrl": ["jdbc:mysql://localhost:3306/test_db"],"table": ["order_analysis"]}],"password": "123456","username": "root","where": ""}},"writer": {"name": "streamwriter","parameter": {"encoding": "utf-8","print": true}}}],"setting": {"speed": {"channel": "1"}}}
}

启动datax:

python datax.py ./mysql2stream.json


以上就是完成DataX使用案例,更多详细信息见:https://github.com/alibaba/DataX/blob/master/userGuid.md

DataX同步离线数据基础使用教程相关推荐

  1. 使用datax同步cassandra数据

    DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现各种异构数据源之间高效的数据同步功能.最近,阿里云cassandra团队为datax提供了cassandra读写插件,进一步丰富了d ...

  2. 使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南

    概述 现在越来越多的技术架构下会组合使用MaxCompute和TableStore,用MaxCompute作大数据分析,计算的结果会导出到TableStore提供在线访问.MaxCompute提供海量 ...

  3. 2020年整理的大数据基础入门教程总结和学习路线

    所谓大数据(Big Data),就是需要处理的数据量非常巨大,已经达到了 TB.PB 甚至 EB.ZB 级别,需要成千上万块硬盘才能存储.传统的技术手段在大数据面前不堪一击,只能探索一套新的解决方案. ...

  4. datax同步oracle数据到hbase,hbase的rowkey使用hash生成

    配置Oracle Reader插件 在DataX的作业文件中,需要配置Oracle Reader插件,指定Oracle数据库的连接信息.要同步的表和列等参数.示例配置如下: {     "j ...

  5. 大数据基础篇~JavaSE第一章

    大数据基础篇教程分享01 目前计算机专业现状,java开发工程师虽然容易找工作(这个也是在你在大学期间java基础学习的比较好,然后会一些框架,才能找到工作)但是java开发常常熬夜,楼主就是卷不动j ...

  6. 离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 概述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlSer ...

  7. DataX离线数据同步工具/平台

    DataX离线数据同步工具/平台 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.SQL Server.Oracle.PostgreSQL.HDFS.Hive.O ...

  8. DataX离线数据同步

    目录 1 DataX 2 ODPS同步数据到HDFS HA 配置 Kerberos 配置 域外访问配置 3 HDFS同步数据到另一个HDFS 4 MongoDB同步数据到HDFS 5 带 Kerber ...

  9. 离线数据同步平台datax+报表可视化平台metabase

    datax DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableS ...

  10. datax实现mysql数据同步

    前言 DataX 是阿里内部广泛使用的离线数据同步工具/平台,可以实现包括 MySQL.Oracle.HDFS.Hive.OceanBase.HBase.OTS.ODPS 等各种异构数据源之间高效的数 ...

最新文章

  1. 5单个编译总会编译全部_5分钟读懂JavaScript预编译
  2. 无意中发现了一位清华大佬的代码模版
  3. Leetcode 剑指 Offer 09. 用两个栈实现队列 (每日一题 20210915)
  4. ORACLE 11G EXP导出空表方法
  5. Python练习 | 初识Python、数据类型、基本语句
  6. 局域网连接SQL Server数据库配置
  7. wince导航_宁可用手机导航,也不用汽车导航?
  8. 导出sql文件_(一)SQL基本知识
  9. javascript表格可以输入数据_最火8套测量自动计算表格,输入数据直接得结果,效率提升80%...
  10. JAVA浮点数浮点数转换成人民币读法
  11. jquery 获取同级元素_如何在jQuery中获取元素的同级
  12. 循环中需要调用异步怎么确保执行完再执行其他的_JavaScript的工作原理:事件循环及异步编程...
  13. 《Mimics软件临床应用:计算机辅助外科手术》目录摘要
  14. uni-app银行卡卡号验证
  15. linux dropbox自动同步,Linux免dropbox客户端备份脚本
  16. 解决VMware虚拟机宿主机与虚拟机通讯慢
  17. 重磅精品课程总有一门是你想要找的
  18. 一文到胃------合并(归并)排序原理
  19. FFMPEG之音频播放
  20. 31省市自治区农村居民消费价格指数(2010-2020年)

热门文章

  1. 如何免费将XPS转换为PDF格式
  2. godaddy又支持支付宝支付了。今天backorder了一个域名,尝试用支付宝支付。居然可以支付了。当时的汇率结算。...
  3. 你有必要不沾计算机一段时间英语,2016新目标八年级英语下全册重点总结.docx
  4. stm32用杜邦线与中断模拟led灯开关
  5. 黑苹果原版安装从零开始---5驱动安装篇
  6. python卡方拟合性检验_卡方分布、卡方独立性检验和拟合性检验理论及其python实现...
  7. 域管理电脑自动锁屏html,简单两步让windows实现关闭屏幕时自动锁定电脑
  8. Excel取消合并单元格时在每个单元格中保留内容,你会批量操作吗?
  9. Lock锁确保线程安全
  10. 软件著作权申请表怎么填