数据百问系列:什么是 ETL ?ETL 的常见技术措施是什么?
发布时间:2021-06-04 20:55:19 所属栏目:大数据 来源:互联网
导读:文章结构 先聊一下什么是 ETL。聊一下大致的概念和一般意义上的理解。 聊一聊数据流是什么样子。因为 ETL 的工作主要会体现在一条条的数据处理流上,因此这里做一个说明。 举个具体的例子来说明。 0x01 什么是 ETL ETL,是英文 Extract-Transform-Load 的缩
文章结构
先聊一下什么是 ETL。聊一下大致的概念和一般意义上的理解。
聊一聊数据流是什么样子。因为 ETL 的工作主要会体现在一条条的数据处理流上,因此这里做一个说明。
举个具体的例子来说明。
0x01 什么是 ETL
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
嗯,怎么理解 ETL 这个东西呢?直接上一个网上搜到的招聘信息看一下:
职位名称:ETL工程师
职位职责:
负责ETL系统研发和对外支持工作;
设计科学的数据抽取、转换、加载的工作流程,保证数据及时、正确地抽取到数仓中;
负责安排ETL工程流程的调度和成功执行;
协调数据建模建立风控模型、对数据进行挖掘、优化及统计。
职位要求:
熟练掌握数仓方法论,理解维度建模;
熟悉hadoop,hive,hbase,spark,flume等工作原理;熟悉kettle,informatica,sqoop等工作;
精通hive语法,熟练SQL优化,熟悉python/shell等一种脚本语言;掌握mysql,oracle,sqlserver等数据库;
有互联网大数据平台数据开发经验优先。
看上面的要求,有几个点可以关注一下:
数仓的理论
计算引擎:Hadoop、Spark、hive
数据同步:Flume、Sqoop、Kettle
存储引擎:Mysql、Oracle、Hbase等存储平台
我们大致分析一下这些内容。首先说数仓的理论,这个在前面的博客也都有提到,很重要,从理论上指导了怎么来进行数据处理。存储引擎也就不提了。这两者不太算是 ETL 的范畴。
那就聊一下计算引擎和数据同步的工具。我们可以大致理解 ETL 的主要工作就是利用这些工具来对数据进行处理。下面举几个栗子来说明 ETL 的场景:
Nginx 的日志可以通过 Flume 抽取到 HDFS 上。
Mysql 的数据可以通过 Sqoop 抽取到 hive 中,同样 hive 的数据也可以通过 Sqoop 抽取到 Mysql 中。
HDFS 上的一些数据不规整,有很多垃圾信息,可以用 Hadoop 或者 Spark 进行处理并重新存入 HDFS 中。
hive 的表也可以通过 hive 再做一些计算生成新的 hive 表。
这些都算是 ETL,其中 1 和 2 都比较典型,它们把数据从一个存储引擎转移到另一个存储引擎,在转移的过程中做了一定的转换操作。3 和 4 也同样是 ETL 只是它们更侧重的是数据的加工。
到了这一步,我们不再纠结于具体的 ETL 概念是什么,仅从自己的直观理解上来定义 ETL,不管严谨不严谨,反正这些活 ETL 工程师基本都要干。
ETL 是对数据的加工过程,它包括了数据抽取、数据清洗、数据入库等一系列操作,大部分和数据处理清洗相关的操作都可以算是 ETL。
0x02 数据流长什么样子
举个栗子
举个简单的栗子,下面是一个种数据流的设计,蓝色的框框代表的是数据来源,红色的框框主要是数据计算平台,绿色的 HDFS 是我们一种主要的数据存储,hive、Hbase、ES这些就不再列出来了。
数据流的分类
我们常说的数据流主要分两种:
离线数据
实时数据
其中离线数据一般都是 T+1 的模式,即每天的凌晨开始处理前一天的数据,有时候可能也是小时级的,技术方案的话可以用 Sqoop、Flume、MR 这些。实时数据一般就是指实时接入的数据,一般是分钟级别以下的数据,常用的技术方案有 Spark Streaming 和 Flink。
现在的大部分数据流的设计都会有离线和实时相结合的方案,即 Lambda 架构,感兴趣的同学可以了解一下。
![]() (编辑:阿坝站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |