专栏首页Spark学习技巧关于ETL那些事情

关于ETL那些事情

ETL这个概念也很久了,但是真正的进入大家的视野估计还是由于大数据。由于从15年至今,其实整个大数据领域都处于做数据仓库,然后简单生成报表这个层面,ETL(ETL - Extract, Transform, Load),这个概念就必不可少了。由于,经常有人在群里问浪尖:什么是ETL?ETL做了什么事情?也经常有招聘信息里面包含ETL,那么今天在这里我就简单给大家聊聊ETL。

数据仓库中的ETL概述

企业中是需要定期的加载数据仓库,以达到促进业务分析的目的。为此,需要提取来自一个或多个操系统的数据并将其复制到数据仓库中。数据仓库环境面临的挑战是在许多系统上集成,重新排列和整合大量数据,从而为商业智能提供新的统一信息库。

从源系统中提取数据并将其引入数据仓库的过程通常称为ETL,即提取,转换和加载。请注意,ETL是指一个广泛的过程,而不是三个明确的步骤。首字母缩略词ETL可能太简单了,因为它省略了运输阶段,意味着该过程的每个其他阶段都是不同的。不过,整个过程被称为ETL。

ETL的方法和任务已为人所熟知多年,并不一定是数据仓库环境所独有的:各种各样的专有应用程序和数据库系统是任何企业的IT骨干。数据必须在应用程序或系统之间共享,试图整合它们,至少给两个应用程序有相同的数据视图。这种数据共享主要是通过类似于我们现在称之为ETL的机制来解决的。

数据仓库中的ETL基础知识

在ETL过程中会发生什么?以下任务是该流程中的主要操作。

数据提取(Extract)

在提取过程中,从许多不同的来源识别及提取所需的数据,数据源包括数据库系统和应用程序。很多时候,不可能直接识别感兴趣的特定数据子集,因此需要提取更多的数据,而相关数据的识别将在后面的步骤中完成。在此提取过程中可能会根据源数据的一下功能特性,进行一些转换操作。提取数据的大小从几百千字节到千兆字节,取决于源系统和业务情况。两次提取数据操作之间的时间跨度可以在几天/几小时到几分钟之间变化甚至接近实时。例如Web服务器日志文件在短时间内就可以有上百兆,而浪尖收集处理的数据集,则基本上是每秒几个GB。

数据传输(Transportation)

数据提取后,必须将其物理运输到目标系统或中间系统进行进一步处理。根据所选的交通方式,也可以在这个过程中进行一些转换。例如,可以夸网络在目标机器上执行SQL语句实现连接两列作为SELECT语句的一部分。

数据转换(Transformation)

该步骤主要是将提取的数据转换为需要的格式,以便于存入另一数据仓库。转换的过程中将使用一定的规则(业务强相关)或者lookup表或者和其它数据整合,浪尖在这里列出来几个常见的转换操作供大家参考:

• 应用业务规则(所谓的派生,例如计算新的度量和维度),

• 清理(例如,将NULL映射到0或“男”到“M”和“女”到“F”等)

• 过滤(例如,选择仅加载某些列),

• 将一列分成多列,反之亦然,

• 将来自多个来源的数据(例如,查找,合并)结合在一起,

• 转置行和列,

• 应用任何种类的简单或复杂的数据验证(例如,如果一行中的前3列是空的,则拒绝来自处理的行)

数据加载(load)

将数据存储于目标数据仓库(hbase,hive等),以供数据分析使用。这就是ETL的终点。

ETL的工具

最常见的ETL工具就是kettle。但是这个资料比较少。

浪尖在企业中并没有用到这个工具,原因是数据抽取我们有自己的agent(常用的也有flume,sqoop应该也算一个),然后传输用forward+kafka,转换操作我们可以spark代码,然后数据仓库hive或者hbase均可(看需求)。

商业的版的ETL工具很多,但是收费,即使不收费,什么东西都被工具实现了,我们作为精英程序员的价值就不存在了。

本文分享自微信公众号 - Spark学习技巧(bigdatatip),作者:浪尖

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 入门大数据必读

    Spark学习技巧
  • 数据仓库①:数据仓库概述

    前言 阅读本文前,请先回答下面两个问题: 1. 数据库和数据仓库有什么区别? 2. 某大公司Hadoop Hive里的关系表不完全满足完整/参照性约束,也不完全...

    Spark学习技巧
  • 系列 | 漫谈数仓第三篇NO.3 『数据魔法』ETL

    ☞ ETL同步之道 [ Sqoop、DataX、Kettle、Canal、StreaSets ]

    Spark学习技巧
  • 给新同学:编程教室资源索引

    本编程教室建号四年多,已经发布了数百篇教程和文章,并且还分享了不少资源和习题。不过最近新加入的同学可能会找不到以前的内容,所以我们定期整理一下,方便大家使用。 ...

    Crossin先生
  • 从雕像到肖像画,这位设计师用 GAN 和 PS 复原了他眼中的古罗马皇帝「群像」

    波澜壮阔的古罗马文明令人神往,那些如雷贯耳的名字更是引人好奇,例如罗马帝国第一位「皇帝」奥古斯都、暴君尼禄……

    机器之心
  • 一文掌握 Linux 性能分析之网络篇(续)

    在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个。总结下来,余下的工具包括但不限于以下几个:

    CloudDeveloper
  • javascript前端:封装array的foreach方法

    在日常工作中,会经常遍历数组,除了常用的for循环外,forEach应该也是最常用的

    用户4831957
  • 详解:如何在uni-app中选择一个合适的UI组件库

    uni-app框架转眼已经发布了一年多,使用uni-app的开发者也是与日俱增。因为uni-app是一个跨端框架,所以我们大多使用它就是为了同时一套代码跨多端,...

    极乐君
  • 为什么C语言不会过时?

    评价任何一门编程语言,都是招人骂的。 永远是这样。就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:“傻逼!”这个在心理学...

    CSDN技术头条
  • 为什么C语言不会过时?

    来源:赵岩老师的个人网站:http://zhaoyan.website/blog/index.php/2017/07/15/future/

    帅地

扫码关注云+社区

领取腾讯云代金券