什么是ETL?

ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。

ETL是数据仓库中的非常重要的一环。它是承前启后的必要的一步。相对于关系数据库,数据仓库技术没有严格的数学理论基础,它更面向实际工程应用。所以从工程应用的角度来考虑,按着物理数据模型的要求加载数据并对数据进行一些系列处理,处理过程与经验直接相关,同时这部分的工作直接关系数据仓库中数据的质量,从而影响到联机分析处理和数据挖掘的结果的质量。

什么是DATAX?

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

datax相关地址:github.com/alibaba/Dat…

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

datax框架设计原理:

DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。

Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。

Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

核心模块介绍:

DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。

DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行。Task便是DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。

切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5。

每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。

DataX作业运行起来之后, Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则,异常退出,进程退出值非0。

job的解读:

{

"job": {

"content": [

{

"reader": { //读入库配置,比如说是sql server

"name": "", //数据源名称,别瞎写

"parameter": {} //数据库配置信息

},

"writer": { //写入库配置,比如说是mysql

"name": "", //数据源名称,别瞎写

"parameter": {} //数据库配置信息

}

}

],

"setting": { //基本设置

"speed": { //流量控制

"channel": 1, //同步时候的并发数

"byte": 104857600 //同步时候的字节大小,影响速度

},

"errorLimit": { //脏数据控制

"record": 10, //脏数据最大记录数阈值

"percentage": 0.05 //脏数据占比阈值

}

}

}

复制代码

简单示例:

{

"job": {

"content": [

{

"reader": {

"name": "mysqlreader",

"parameter": {

"password": "gswzdp!1234",

"username": "gswzdp",

"connection": [{

"querySql": [

"select SUBSTR(m.MATNR,10) MATNR,k.MAKTX,m.WERKS,m.LGORT STORAGE_LOCATION,

t.LGOBE STORAGE_LOCATION_DESC,m.charg BATCH,m.clabs MENGE,a.MEINS UNIT,

m.ERSDA WAREHOUS_TIME

from mchb m

join mara a on a.MATNR = m.matnr

join makt k on k.MATNR = m.matnr

join t001l t on t.LGORT = m.lgort

where m.lgort REGEXP '97' and m.clabs > 0 limit 1"

],

"jdbcUrl": ["jdbc:mysql://10.213.111.102:23306/gsepclastmile?useUnicode=true&characterEncoding=utf8&yearIsDateType=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&rewriteBatchedStatements=true"]

}

]

}

},

"writer": {

"name": "mysqlwriter",

"parameter": {

"writeMode": "insert",

"column": ["MATNR","MAKTX","WERKS","STORAGE_LOCATION","STORAGE_LOCATION_DESC","BATCH",

"SUPPLIER","SUPPLIER_DESC","MENGE","UNIT","WAREHOUS_TIME"],

"preSql": [

"TRUNCATE TABLE DWD_MAT_MARA"

],

"connection": [

{

"jdbcUrl": "jdbc:mysql://10.212.31.83:13306/imap?useUnicode=true&characterEncoding=utf8",

"table": ["DWD_MAT_MARA"]

}

],

"password": "Wzzhygl@1234",

"username": "root",

}

}

}

],

"setting": {

"speed": {

"channel": 1

}

}

}

}

复制代码

定时任务的创建:

创建一个名为testdatax的crontab文件,命令行进入到相应的目录 vi testdatax,创建并打开文件,输入以下内容:

0 3 * * * python /usr/datax/datax3/bin/datax.py /home/admin/oracle2oracle.json >>/home/hanfa.shf/log.date +\%Y\%m\%d\%H\%M\%S

0 3 * * *表示每天的3点执行这个任务。

python /usr/datax/datax3/bin/datax.py表示安装的DataX datax.py所在的目录的绝对路径,一般在datax/bin/目录下。

/usr/datax/mysqk.json.json表示作业配置文件的绝对路径

/usr/test.shf/log.date +\%Y\%m\%d\%H\%M\%S表示任务运行时产生日志的输出路径,并以log.当前时间命名,要替换成真实存在的绝对路径。

文件编辑完成之后,按esc,再按shift+;,再输入wq,则保存并退出文件编辑。

启动命令:

命令说明:

启动服务

/sbin/service crond start

关闭服务

/sbin/service crond stop

重启服务

/sbin/service crond restart

重新载入配置

/sbin/service crond reload

END

最后总结一下,其实看了上文的介绍以及使用,可以发现,datax的实现思路就是一个定时任务,定时的从A库读取数据同步到B库去,和我们常见的读写分离如出一辙;做一个定时任务,然后配置两个数据源,定时的从A数据源读取到B数据源中的一个流程,感兴趣的小伙伴可以自己动手搭建一个简单地datax,当然常用你给的ELT工具并不止datax一个,也可使用Kettle这个工具进行数据同步。

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[一文带你入门ETL工具-datax的简单使用]http://www.zyiz.net/tech/detail-138827.html

java etl工具_一文带你入门ETL工具-datax的简单使用相关推荐

  1. lambda表达式java项目常用_一文带你彻底搞懂Lambda表达式

    1. 为什么使用Lambda表达式 Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风 ...

  2. 教妹学Java(二十一):一文带你了解面向对象编程的所有概念

    你好呀,我是沉默王二,是<Web 全栈开发进阶之路>的作者,CSDN 的博客之星.<教妹学 Java>是一套非常有趣的付费专栏,除了继续保持幽默风趣的行风风格,我还力求把每一个 ...

  3. 一文带你入门go语言

    一文带你入门go语言 go/golang是一门google开发的编程语言,其代码简洁易读,天生支持并发,完美契合当今互联网生态. 目前Go语言已经⼴泛应用于人工智能.云计算开发.容器虚拟化.⼤数据开发 ...

  4. 一文带你入门flink sql

    文章目录 一文带你入门flink sql 写在前面 环境准备 正文 遇到的一些问题 错误一 错误二 错误三 一文带你入门flink sql 写在前面 本次实战主要是通过Flink SQL Client ...

  5. java byte char io流_一文带你看懂JAVA IO流,史上最全面的IO教学

    原标题:一文带你看懂JAVA IO流,史上最全面的IO教学 一.IO流是什么 惯例引用百科的回答 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符 ...

  6. java io流详解_一文带你看懂JAVA IO流,史上最全面的IO教学啦

    一.IO流是什么 惯例引用百科的回答流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数据的操作 ...

  7. javaio流_一文带你看懂JAVA IO流,史上最全面的IO教学啦

    一.IO流是什么 惯例引用百科的回答 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数据的操 ...

  8. java接口文档生成工具_接口文档生成

    一.为什么要写接口文档? 1.正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的.一个工整的文档显得是非重要. 2.项目开发过程中前后端工程师有一个统一的文件进行沟通 ...

  9. 数据查询和业务流分开_一文带你了解大数据管道

    介绍 如果您从大数据开始,通常会被众多工具,框架和选项所困扰. 在本文中,我将尝试总结其成分和基本配方,以帮助您开始大数据之旅. 我的目标是对不同的工具进行分类,并试图解释每个工具的目的以及它如何适应 ...

最新文章

  1. 单链表逆序生成及逆置的完整实现
  2. android程序安装后图标不显示
  3. 爆炸销毁动画组件Explosions
  4. Java字符串、文件MD5工具类
  5. csredis-in-asp.net core理论实战-主从配置、哨兵模式
  6. 大湾区第二次.NET技术交流会圆满成功
  7. 神经网络瘦身:SqueezeNet
  8. PHP之cookie免登录
  9. 【Qt教程】3.2 - Qt5 event事件、定时器timerEvent
  10. 具有Eclipse和嵌入式JBoss HornetQ Server的简单JMS 1.1生产者和使用者示例
  11. linux ldap配置详解
  12. 康托尔、哥德尔、图灵——永恒的金色对角线(rev#2)
  13. c语言中min函数的作用,min函数到底在哪个头文件里?
  14. 去掉Chrome自动填充表单浅黄色背景色
  15. UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal mu
  16. go项目杀进程并重启shell
  17. 《您的设计模式》(CBF4LIFE)之“访问者模式”【整理】
  18. 上班族如何提高“非工资收入”?跟清北大咖零基础学理财
  19. php批量裁剪图片,怎么批量裁剪图片 按照一定的比例快速裁剪多张照片的方法,自定义裁剪图片大小...
  20. 计算机网络——DV和LS算法笔记

热门文章

  1. MAC层与llc层的大不同
  2. 我的 IP 地址(View IP address)
  3. 四大AI+金融场景,10+真实产业范例,智慧金融行业实战课火爆开启
  4. 网页被篡改怎么防护?
  5. c语言删除数组中的最小值,C语言中删除数组中某个元素的方法
  6. 设计师电脑配置2023:适合不同级别的设计师!
  7. 《鹰猎长空》剖析美育视野下国产儿童电影发展走向
  8. 工厂模式:优雅地生成多种类型对象
  9. 交计算机作业上师大,【图】- 师大21年新出《计算机体系结构》作业考核标准 - 昆山玉山其他教育培训 - 昆山百姓网...
  10. 宁波网站排名优化,如何做营销型的网站?