数据分析实战45讲(12) 数据集成

您所在的位置:网站首页 数据集成包括 数据分析实战45讲(12) 数据集成

数据分析实战45讲(12) 数据集成

2024-06-12 23:32| 来源: 网络整理| 查看: 265

       数据集成就是将多个数据源合并存放在一个数据存储中(如数据仓库),从而方便后续的数据挖掘工作。

        据统计,大数据项目中80%的工作都和数据集成有关,这里的数据集成有更广泛的意义,包括了数据清洗、数据抽取、数据集成和数据变换等操作。这是因为数据挖掘前,我们需要的数据往往分布在不同的数据源中,需要考虑字段表达是否一样,以及属性是否冗余。

 1.数据集成的两种架构:ELT和ETL

ETL是英文Extract、Transform和Load的缩写,顾名思义它包括了数据抽取、转换、加载三个过程。ETL可以说是进行数据挖掘这项工作前的“备菜”过程。

1.数据抽取:将数据从已有的数据源中提取出来。

2.转换:对原始数据进行处理,例如将表输入1和 表输入2 进行连接形成一张新的表。

根据转换发生的顺序和位置,数据集成可以分为 ETL 和 ELT 两种架构

ETL 的过程为提取(Extract)——转换(Transform)——加载(Load),在数据源抽取后首先进行转换,然后将转换的结果写入目的地。

ELT 的过程则是提取(Extract)——加载(Load)——变换(Transform),在抽取后将结果先写入目的地,然后利用数据库的聚合分析能力或者外部计算框架,如Spark来完成转换的步骤。

2.ETL工具有哪些?

商业软件:Informatica PowerCenter、IBM InfoSphere DataStage、Oracle Data Integrator、Microsoft SQL Server Integration Services等

开源软件:Kettle、Talend、Apatar、Scriptella、DataX、Sqoop等

以kettle为例:采用可视化的方式进行操作,来对数据库间的数据进行迁移。它包括了两种脚本:Transformation转换和Job作业。

Transformation(转换):相当于一个容器,对数据操作进行了定义。数据操作就是数据从输入到输出的一个过程。你可以把转换理解成为是比作业粒度更小的容器。在通常的工作中,我们会把任务分解成为不同的作业,然后再把作业分解成多个转换。

Job(作业):相比于转换是个更大的容器,它负责将转换组织起来完成某项作业。

1>创建Transformation(转换):输入,中间转换,输出

在Transformation中包括两个主要概念:Step和Hop。Step的意思就是步骤,Hop就是跳跃线的意思。

Step(步骤):Step是转换的最小单元,每一个Step完成一个特定的功能。在上面这个转换中,就包括了表输入、值映射、去除重复记录、表输出这4个步骤;

Hop(跳跃线):用来在转换中连接Step。它代表了数据的流向。

2>创建Job

完整的任务,实际上是将创建好的转换和作业串联起来。在这里Job包括两个概念:Job Entry、Hop。

如何理解这两个概念呢?

Job Entry(工作实体):Job Entry是Job内部的执行单元,每一个Job Entry都是用来执行具体的任务,比如调用转换,发送邮件等。

Hop:指连接Job Entry的线。并且它可以指定是否有条件地执行。

在Kettle中,你可以使用Spoon,它是一种一种图形化的方式,来让你设计Job和Transformation,并且可以保存为文件或者保存在数据库中。

例子1:将文本文件的内容转化到MySQL数据库中

Step1:创建转换,右键“转换→新建”;

Step2:在左侧“核心对象”栏目中选择“文本文件输入”控件,拖拽到右侧的工作区中;

Step3:从左侧选择“表输出”控件,拖拽到右侧工作区;

Step4:鼠标在“文本文件输入”控件上停留,在弹窗中选择图标,鼠标拖拽到“表输出”控件,将一条连线连接到两个控件上;

这时我们已经将转换的流程设计好了,现在是要对输入和输出两个控件进行设置。

Step5:双击“文本文件输入”控件,导入已经准备好的文本文件;

Step6:双击“表输出”控件,这里你需要配置下MySQL数据库的连接,同时数据库中需要有一个数据表,字段的设置与文本文件的字段设置一致(这里我设置了一个wucai数据库,以及score数据表。字段包括了name、create_time、Chinese、English、Math,与文本文件的字段一致)。

Step7:创建数据库字段的对应关系,这个需要双击“表输出”,找到数据库字段,进行字段映射的编辑;

Step8:点击左上角的执行图标,

这样我们就完成了从文本文件到MySQL数据库的转换。

3.其他的ETL工具,

这里简单介绍下阿里巴巴的开源工具DataX和Apache的Sqoop。

1>阿里开源软件:DataX

可以实现跨平台、跨数据库、不同系统之间的数据同步及交互,它将自己作为标准,连接了不同的数据源,以完成它们之间的转换

DataX的模式是基于框架+插件完成的,

在这个框架里,Job作业被Splitter分割器分成了许多小作业Sub-Job。在DataX里,通过两个线程缓冲池来完成读和写的操作,读和写都是通过Storage完成数据的交换。比如在“读”模块,切分后的小作业,将数据从源头装载到DataXStorage,然后在“写”模块,数据从DataXStorage导入到目的地。

这样的好处就是,在整体的框架下,我们可以对Reader和Writer进行插件扩充,比如我想从MySQL导入到Oracle,就可以使用MySQLReader和OracleWriter插件,装在框架上使用即可。

2>Apache开源软件:Sqoop

它主要用来在Hadoop和关系型数据库中传递数据。通过Sqoop,我们可以方便地将数据从关系型数据库导入到HDFS中,或者将数据从HDFS导出到关系型数据库中。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3