数据集成:数据挖掘的准备工作之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️
🐴作者:秋无之地

🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。

🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、留言💬、关注🤝,关注必回关

上一篇文章已经跟大家介绍过《数据清洗:数据挖掘的前期准备工作》,相信大家对数据清洗都有一个基本的认识。下面我讲一下:数据集成:数据挖掘的准备工作之一

一、数据集成重要性

上一节中讲了数据清洗,了解到数据采集回来需要经过清洗才能使用。今天来说一下数据集成。

1、为什么要数据集成

我们采集的数据经常会有冗余重复的情况。

举个简单的例子,假设你是一个网络综艺节目的制片人,一共有 12 期节目,你一共打算邀请 30 位明星作为节目的嘉宾。你知道这些明星影响力都很大,具体在微博上的粉丝数都有标记。于是你想统计下,这些明星一共能直接影响到微博上的多少粉丝,能产生多大的影响力。

然后你突然发现,这些明星的粉丝数总和超过了 20 亿。那么他们一共会影响到中国 20 亿人口么?显然不是的,我们都知道中国人口一共是 14 亿,这 30 位明星的影响力总和不会覆盖中国所有人口。

那么如何统计这 30 位明星真实的影响力总和呢?这里就需要用到数据集成的概念了。

2、什么是数据集成

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

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

二、数据集成的两种架构:ELT 和 ETL

数据集成是数据工程师要做的工作之一。一般来说,数据工程师的工作包括了数据的 ETL 和数据挖掘算法的实现。算法实现可以理解,就是通过数据挖掘算法,从数据仓库中找到“金子“。

1、ELT 和 ETL含义

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

我来解释一下数据抽取、转换、加载这三个过程。

  1. 抽取:是将数据从已有的数据源中提取出来。
  2. 转换:是对原始数据进行处理,例如数据清洗和转换。
  3. 加载:按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

举个例子,将表输入 1 和 表输入 2 进行连接形成一张新的表。

如果是三张表连接的话,可以怎么操作呢?先将表输入 1 和表输入 2 进行连接形成表输入 1-2,然后将表输入 1-2 和表输入 3 进行连接形成新的表。然后再将生成的新表写入目的地。

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

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

目前数据集成的主流架构是 ETL,但未来使用 ELT 作为数据集成架构的将越来越多。这样做会带来多种好处:

  • ELT 和 ETL 相比,最大的区别是“重抽取和加载,轻转换”,从而可以用更轻量的方案搭建起一个数据集成平台。使用 ELT 方法,在提取完成之后,数据加载会立即开始。一方面更省时,另一方面 ELT 允许 BI 分析人员无限制地访问整个原始数据,为分析师提供了更大的灵活性,使之能更好地支持业务。
  • 在 ELT 架构中,数据变换这个过程根据后续使用的情况,需要在 SQL 中进行,而不是在加载阶段进行。这样做的好处是你可以从数据源中提取数据,经过少量预处理后进行加载。这样的架构更简单,使分析人员更好地了解原始数据的变换过程。

2、ETL 工具有哪些?

典型的 ETL 工具有:

  • 商业软件:Informatica PowerCenter、IBM InfoSphere DataStage、Oracle Data Integrator、Microsoft SQL Server Integration Services 等
  • 开源软件:Kettle、Talend、Apatar、Scriptella、DataX、Sqoop 等

相对于传统的商业软件,Kettle 是一个易于使用的,低成本的解决方案。国内很多公司都在使用 Kettle 用来做数据集成。所以我重点给你讲解下 Kettle 工具的使用。

三、Kettle 工具的使用

Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,可以在 Window 和 Linux 上运行,不需要安装就可以使用。Kettle 中文名称叫水壶,该项目的目标是将各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle 在 2006 年并入了开源的商业智能公司 Pentaho, 正式命名为 Pentaho Data Integeration,简称“PDI”。因此 Kettle 现在是 Pentaho 的一个组件,下载地址:https://community.hitachivantara.com/docs/DOC-1009855

在使用 Kettle 之前还需要安装数据库软件和 Java 运行环境(JRE)。

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

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

接下来,我分别讲下这两个脚本的创建过程。

1、如何创建 Transformation(转换)

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,并且可以保存为文件或者保存在数据库中。下面我来带你做一个简单的例子。

3、案例 1:如何将文本文件的内容转化到 MySQL 数据库中

文本文件内容如下:

  1. 创建转换,右键“转换→新建”;
  2. 在左侧“核心对象”栏目中选择“文本文件输入”控件,拖拽到右侧的工作区中;
  3. 从左侧选择“表输出”控件,拖拽到右侧工作区;
  4. 鼠标在“文本文件输入”控件上停留,在弹窗中选择图标,鼠标拖拽到“表输出”控件,将一条连线连接到两个控件上;
  5. 双击“文本文件输入”控件,导入已经准备好的文本文件
  6. 双击“表输出”控件,这里你需要配置下 MySQL 数据库的连接,同时数据库中需要有一个数据表,字段的设置与文本文件的字段设置一致(这里我设置了一个 wucai 数据库,以及 score 数据表。字段包括了 name、create_time、Chinese、English、Math,与文本文件的字段一致)。
  7. 创建数据库字段的对应关系,这个需要双击“表输出”,找到数据库字段,进行字段映射的编辑;
  8. 点击左上角的执行图标,如下图:

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

4、阿里开源软件:DataX

在以往的数据库中,数据库都是两两之间进行的转换,没有统一的标准,转换形式是这样的:

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

DataX 的模式是基于框架 + 插件完成的,DataX 的框架如下图:

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

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

5、Apache 开源软件:Sqoop

Sqoop 是一款开源的工具,是由 Apache 基金会所开发的分布式系统基础架构。Sqoop 在 Hadoop 生态系统中是占据一席之地的,它主要用来在 Hadoop 和关系型数据库中传递数据。通过 Sqoop,我们可以方便地将数据从关系型数据库导入到 HDFS 中,或者将数据从 HDFS 导出到关系型数据库中。

Hadoop 实现了一个分布式文件系统,即 HDFS。Hadoop 的框架最核心的设计就是 HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,而 MapReduce 则为海量的数据提供了计算。

四、总结

下面是数据集成的总结:

版权声明

本文章版权归作者所有,未经作者允许禁止任何转载、采集,作者保留一切追究的权利。

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

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

相关文章

Discuz论坛网站标题栏Powered by Discuz!版权信息如何去除或是修改?

当我们搭建好DZ论坛网站后,为了美化网站,想把标题栏的Powered by Discuz!去除或是修改,应该如何操作呢?今天飞飞和你分享,在操作前务必把网站源码和数据库都备份到本地或是网盘。 Discuz的版权信息存在两处…

【李沐深度学习笔记】矩阵计算(5)

课程地址和说明 线性代数实现p4 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 本节是第五篇,由于CSDN限制,只能被迫拆分 矩阵计算 多元函数的等高线 此处参考视频:熟肉)多元…

go学习-GMP模型

GMP 好理解还是 GPM 好理解? 按照上述图,从上往下,GPM更适合理解 GMP 模型: Go 语言运行时系统中的 Goroutine、用于管理 Goroutine 调度的 Go Scheduler(P)、机器可用的逻辑处理器数量(M&#…

[golang gui]fyne框架代码示例

1、下载GO Go语言中文网 golang安装包 - 阿里镜像站(镜像站使用方法:查找最新非rc版本的golang安装包) golang安装包 - 中科大镜像站 go二进制文件下载 - 南京大学开源镜像站 Go语言官网(Google中国) Go语言官网(Go团队) 截至目前(2023年9月17日&#x…

【数据分享】2005-2022年全国民航机场客货吞吐量和起降架次数据

机场是一个城市对外联系的重要渠道,机场的旅客吞吐量和货物吞吐量是体现一个城市对外联系程度的重要指标。 本次我们给大家分享的是2005-2022年我国民航机场的旅客吞吐量、货邮吞吐量、起降架次数据。数据格式为Excel和Shp两种格式。数据坐标为WGS1984。原始数据来…

腾讯面试题:无网络环境,如何部署Docker镜像?

亲爱的小伙伴们,大家好!我是小米,很高兴再次和大家见面。今天,我要和大家聊聊一个特别有趣的话题——腾讯面试题:无网络环境,如何部署Docker镜像?这可是一个技术含量颇高的问题哦!废…

nodejs 如何在npm发布自己的包 <记录>

一、包结构 必要结构: 一个包对应一个文件夹(文件夹名不是包名,但最好与包名保持一致,包名以package.json中的name为主)包的入口文件index.js包的配置文件package.json包的说明文档README.md 二、需要说明的文件 1.配…

PyTorch实战:卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类

目录 前言 一、卷积神经网络概述 二、卷积神经网络特点 卷积运算 单通道,二维卷积运算示例 单通道,二维,带偏置的卷积示例 带填充的单通道,二维卷积运算示例 Valid卷积 Same卷积 多通道卷积计算 1.局部感知域 2.参数共…

软件测试的理论基础1

软件的生命周期 可行性研究和计划(立项) 需求分析 概要设计(测试计划) 详细设计(测试方案) 实现(开发阶段;包含单元测试) 组装测试(集成测试) 确…

【MT7628AN】IOT | MT7628AN OpenWRT开发与学习

IOT | MT7628AN OpenWRT开发与学习 时间:2023-06-21 文章目录 `IOT` | `MT7628AN` `OpenWRT`[开发与学习](https://blog.csdn.net/I_feige/article/details/132911634?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132911634…

上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技

备受瞩目的杭州第19届亚运会,将于9月23日正式开幕。据悉,这也是有史以来项目最多的一届亚运会,除部分传统奥运项目外,还包含武术、藤球、板球、克柔术、柔术等亚洲特色项目,以及霹雳舞、电子竞技等深受年轻人喜爱的新兴…

Mojo编程语言是AI人工智能的新的编程语言

Mojo是Chris Lattner的创业公司Modular开发的一种新的编程语言,旨在统一AI基建和异构计算。Mojo被认为是Python的超集,兼容Python生态,但添加了系统编程和编译期优化的特性,以提高性能和部署效率。Mojo基于MLIR,可以支…

debian终端快捷键设置

为了方便使用图形化debian,快捷调出shell终端是提升工作学习效率的最重要的一步。 1.首先点击右上角,选择设置 2.点击键盘,选择快捷键,并创建自定义快捷键 3.点击添加快捷键 4.根据图中提示创建快捷键 Name: Terminal Command…

Android Jetpack Compose之UI的重组和自动刷新

1.概述 我们都知道,在传统的View中,若要改变UI,需要我们修改View的私有属性,比如要修改一个TextView的文字,我们需要通过它的setText(“xxx”)方法去修改。而Compose 则是通过重组来刷新UI。在之前的状态管理的文章中…

【CSS】画个三角形或圆形或环

首先通过调整边框&#xff0c;我们可以发现一些端倪 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style>.box{width: 150px;height:150px;border: 50px solid black;}</style&g…

[JAVEee]SpringBoot项目的创建

SpringBoot可以更好的开发Spring项目,本文章将使用idea社区版来演示创建项目的过程与注意事项. SpringBoot的优点 SpringBoot中内置快速添加依赖的功能,能够便捷的集成各种框架,帮助开发.内置运行容器,无需配置Tomcat容器等其他web容器,可直接进行项目的部署与运行.更好的使用…

2023年中国研究生数学建模竞赛D题解题思路

为了更好的帮助大家第一天选题&#xff0c;这里首先为大家带来D题解题思路&#xff0c;分析对应赛题之后做题阶段可能会遇到的各种难点。 稍后会带来D题的详细解析思路&#xff0c;以及相关的其他版本解题思路 成品论文等资料。 赛题难度评估&#xff1a;A、B>C>E、F&g…

MDK工程转换Vscode+EIDE方法

MDK工程转换VscodeEIDE方法 1、VscodeEIDE环境搭建方法 请按下方视频完成环境搭建&#xff0c;并编译成功。下载&#xff0c;单步调试如无视频中芯片可暂不执行。 https://www.bilibili.com/video/BV1Zu4y1f72H/?spm_id_from333.337.search-card.all.click&vd_source73…

flex布局与float布局

float布局 俩栏 三栏 flex布局

第一百五十一回 自定义组件综合实例:游戏摇杆二

文章目录 内容回顾实现方法位置细节示例代码我们在上一章回中介绍了如何实现 游戏摇杆相关的内容,本章回中将继续介绍这方面的知识.闲话休提,让我们一起Talk Flutter吧。 内容回顾 我们在上一章回中介绍了游戏摇杆的概念以及实现方法,并且通过示例代码演示了实现游戏摇杆的…