一篇文章搞懂数据仓库:常用ETL工具、方法

目录

一、什么是ETL?

二、ETL & ELT

三、常用的ETL工具

3.1 sqoop

3.2 DataX

3.3 Kettle

3.4 canal

3.5 StreamSets

四、ETL加载策略

4.1 增量

4.2 全量

4.3 流式

小编有话


一、什么是ETL?

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,是数据仓库的生命线。

       抽取(Extract主要是针对各个业务系统及不同服务器的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取和缓慢渐变的规则。

       转换(transform主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过ETL工具可视化拖拽操作可以直接使用标准的内置代码片段功能、自定义脚本、函数、存储过程以及其他的扩展方式,实现了各种复杂的转换,并且支持自动分析日志,清楚的监控数据转换的状态并优化分析模型。

装载(Load主要是将经过转换的数据装载到数据仓库里面,可以通过直连数据库的方式来进行数据装载,可以充分体现高效性。在应用的时候可以随时调整数据抽取工作的运行方式,可以灵活的集成到其他管理系统中。

二、ETL & ELT

伴随着数据仓库的发展(传送门:数据仓库的八个发展阶段),数据量从小到大,数据实时性从T+1到准实时、实时,ETL也在不断演进。

在传统数仓中,数据量小,计算逻辑相对简单,我们可以直接用ETL工具实现数据转换(T),转换之后再加载到目标库,即(Extract-Transform-Load)。但在大数据场景下,数据量越大越大,计算逻辑愈发复杂,数据清洗需放在运算能力更强的分布式计算引擎中完成,ETL也就变成了ELT(Extract-Load-Transform)。

即:Extract-Transform-Load  >>  Extract-Load-Transform

通常我们所说的ETL,已经泛指数据同步、数据清洗全过程,而不仅限于数据的抽取-转换-加载。

三、常用的ETL工具

下面小编将介绍几类ETL工具(sqoop,DataX,Kettle,canal,StreamSets)。

3.1 sqoop

  • 是Apache开源的一款在Hadoop和关系数据库服务器之间传输数据的工具。
  • 可以将一个关系型数据库(MySQL ,Oracle等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导出到关系型数据库中。
  • sqoop命令的本质是转化为MapReduce程序。
  • sqoop分为导入(import)和导出(export),
  • 策略分为table和query
  • 模式分为增量和全量。

image.png

image.png

3.2 DataX

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

image.png

image.png

3.3 Kettle

  • 一款国外免费开源的、可视化的、功能强大的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。

3.4 canal

  • canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据实时订阅和消费,目前主要支持了MySQL,也支持mariaDB。

image.png

3.5 StreamSets

  • 是大数据实时采集ETL工具,可以实现不写一行代码完成数据的采集和流转。通过拖拽式的可视化界面,实现数据管道(Pipelines)的设计和定时任务调度。
  • 创建一个Pipelines管道需要配置数据源(Origins)、操作(Processors)、目的地(Destinations)三部分。

四、ETL加载策略

4.1 增量

  • 有些表巨大,我们需要选择增量策略,新增delta数据需要和存量数据merge合并。
  • 两种方法:
    • merge(一)

image.png

  • merge(二)
    • 只有新增(full join。能拿更新表就拿更新表)

image.png

 

  • 新增+删除
    • history-table Left join delet-table where delect-table.value is null == 表a
    • 表a full join update-table (能拿update就拿update)

image.png

4.2 全量

每天一个全量表,也可一个hive天分区一个全量。

4.3 流式

使用kafka,消费mysql binlog日志到目标库,源表和目标库是1:1的镜像。

小编有话

无论是全量还是增量的方式,都会浪费多余的存储或通过计算去重,得到最新的全量数据。为解决这一问题,墙裂建议kafka的数据同步方案,源表变化一条,目标表消费一条,目标表数据始终是一份最新全量数据,且为实时同步的。 

ps.极端情况下可能会丢数,需要写几个监控监本(详见数据质量篇)和补数脚本即可~

 

数仓系列传送门:https://blog.csdn.net/weixin_39032019/category_8871528.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经典排序之 堆排序

开了个公众号「aCloudDeveloper」,专注技术干货分享,期待与你相遇。 Author: bakari Date: 2012.7.30 排序算法有很多种,每一种在不同的情况下都占有一席之地。关于排序算法我分“经典排序之”系列分别述之。本篇为堆排序。 堆排序是运用二叉…

操作系统之进程概念

进程概念 进程是什么: 表面上来说进程是程序的一个执行实例,或者是一个正在执行的程序等,从操作系统的角度来说,程序运行需要将代码数据加载到内存中,由于在操作系统中运行了很多的程序,操作系统就必须去管…

也谈压缩感知和贝叶斯大脑

来源:科学网压缩感知和人工智能都是当下很热很热的研究课题。不过许多论文数学论述高深莫测,加之一大堆各种千奇百怪的数学符号,不仅让人望而生畏,望而却步。笔者对希望用形象的比喻把问题大致轮廓讲清楚就好。所谓压缩感知是什么…

一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)

目录 1、三种事实表概述 2、三种事实表对比 3、事实表设计 8 大原则 4、事实表设计方法 第一步:选择业务过程及确定事实表类型 第二步:声明粒度 第三步:确定维度 第四步:确定事实 事实表作为数据仓库维度建模的核心&#…

深思考人工智能蝉联SMP2018多轮语义对话冠军,报告解读多轮人机对话实现过程...

人机对话技术近年来受到了学术界和产业界的广泛关注,其发展影响并推动着语音识别与合成、自然语言理解、对话管理以及自然语言生成等研究的进展。众多产业界巨头相继推出了人机对话技术相关产品,并将人机对话技术作为其公司的重点研发方向。8月3日&#…

一篇文章搞懂数据仓库:数据仓库规范设计

目录 一、为什么要进行规范设计? 二、设计规范 - 指标 三、命名规范 - 表命名 3.1 常规表 3.2 中间表 3.3 临时表 3.4 维度表 四、开发规范 五、流程规范 一、为什么要进行规范设计? 无规矩、不方圆。规范设计是在具体开发工作之前制定的&…

map的详解及常见面试题

map的概念 map是STL中的一个关联式容器,它提供一对一的K-V的数据处理能力,由于这个特性,在我们需要完成Key-Value数据处理的时候可以很方便的调用。map的底层结构是红黑树,这棵树对数据有自动排序的功能,所以map中的数…

无处不在的人工智能,IBM沃森的20个行业应用

来源:资本实验室聚焦前沿科技创新与传统产业升级自2011年在美国综艺电视节目《危险边缘》中一战成名后,IBM的Watson就一直是最受关注的人工智能之一。从菜谱分析到球队管理,从健康顾问到酒店礼宾服务,Watson基于自然语言处理和机器…

一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa对比

在介绍Lambda和Kappa架构之前,我们先回顾一下数据仓库的发展历程: 传送门-数据仓库发展历程 写在前面 咳,随着数据量的暴增和数据实时性要求越来越高,以及大数据技术的发展驱动企业不断升级迭代,数据仓库架构方面也在…

宇宙和你,本质上其实只是个八维数字?

剑桥大学的数学物理学家Cohl Furey正在寻找粒子物理标准模型和八元数之间的联系。八元数的乘法规则被编码在被称为法诺面的三角图中。来源: 环球科学对于一维、二维乃至四维的数字,人们都不陌生:一维的实数一直都存在于经典物理中&#xff0c…

一篇文章搞懂数据仓库:数据应用--OLAP

目录 1、OLAP和OLTP的区别 2、OLAP分类 3、OLAP基本操作 4、OLAP选型 1、olap和oltp的区别 OLTPOLAP对象业务开发人员分析决策人员功能日常事务处理面向分析决策模型关系模型多维模型数据量几条或几十条记录>百万于万条记录操作类型增、删、查、改(CRUD)查询为主…

欧洲、美国、中国智慧城市的不同实践路径

来源:远望智库摘要:随着ICT、大数据、物联网等各类新兴技术的不断发展,智慧城市的运营和实践也不断趋于成熟。随着ICT、大数据、物联网等各类新兴技术的不断发展,智慧城市的运营和实践也不断趋于成熟。通过整理欧美各大典型智慧城…

使用IOUtils和FileUtils

文本输出应该比较常用,以前都是通过反复的创建InputStream, InputReader, OutputStream, OutputWriter等去输入输出文本,比较麻烦。Apache提供了一个commons-io.jar包,里面有很多IO相关的工具,比如输入输出文本等,着实…

重磅推荐:机器人行业深度报告

来源:WPR随着中国人口红利消失,机器人不仅在制造业上正在替代工人,还将在军事、服务、娱乐等领域取代人类,“钢铁侠”已不仅仅存在于美国科幻电影中,而正走入我们的生活。本篇报告对机器人行业及龙头上市公司进行分析&…

Could not create directory F:\Qt\Test\Error in Util.asciify(build-First_02-Desktop_Qt_5_6_3_Min

第一次使用的Qt的时候出现了这种错误! 相信很多人在第一次使用的时候都会遇到这样的情况,果不其然,搜了一下很多的处理方法,其中有一种我感觉是最有效的,就是改一下他的生成路径就好了,因为这个错误的出现…

一篇文章搞懂数据仓库:总线架构、一致性维度、一致性事实

目录 1、概述 总线架构 一致性维度 一致性事实 2、总线架构demo 1、概述 在Kimball的维度建模的数据仓库中,关于多维体系结构(MD)有三个关键性概念:总线架构(Bus Architecture),一致性维…

路易斯·罗森伯格与「群体智能」

选自 | Gigaom编译 | 网易智能(smartman163)参与 | 李擎与谷歌、Facebook等开发“传统意义上的人工智能”的技术不同,在Unanimous A.I.,科学家们利用人工智能来放大群体的智慧,而不是使用人工智能来代替人类。他们没有…

Qt实用快捷键(较全面)

总结整理的常用快捷键,欢迎留言补充!

Python下载中国数据库大会(DTCC2020)PPT全集

目录 背景 效果展示 程序下载 网盘下载 背景 前几天中国数据库大会风风火火的在京举行了,期间干货满满,收获良多。在学大佬们的ppt时,发现只能一篇一篇预览,对于求知欲强烈的小编来说简直太难受了,于是便写了个程…

Android UI布局—— 仿QQ登录界面

最近,有点空闲的时间就拿QQ登录界面来模仿练手,做了个简单的登录界面。界面一般般吧,不算很漂亮,现在拿出来分享,希望大家一起学习与进步。有什么不足之处,请各位大侠多多赐教,谢谢。这个界面涉…