当前位置: 首页 > news >正文

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

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

🐴简介: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 则为海量的数据提供了计算。

四、总结

下面是数据集成的总结:

版权声明

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

相关文章:

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

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…...

xml配置文件密码特殊字符处理

错误姿势: 正确姿势:采取转义符的方式 常用转义符:...

遥感数据与作物模型同化

基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…...

UI库DHTMLX Suite v8.2发布全新表单组件,让Web表单实现高度可定制!

DHTMLX Suite v8.2日前已正式发布,此版本的核心是DHTMLX Form,这个小部件接收了4个备受期待的新控件,如Fieldset、Avatar、Toggle和ToggleGroup。官方技术团队还为Grid和TreeGrid小部件中的页眉/页脚工具提示提供了一系列新的配置选项等。 在…...

河北省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著

河北省图书馆典藏《乡村振兴振兴战略下传统村落文化旅游设计》许少辉八一新著...

什么是卷积002

文章目录 前言1.卷积网络和传统网络区别2.卷积神经网络整体架构1.输入层2. 卷积层3.池化层4.全连接层 5.神经网络6.经典网络1.Alexnet2. Vgg3.Resnet 残差网络-特征提取 7.感受野 前言 大纲目录 首先链接图像颜色通道 1.卷积网络和传统网络区别 右边的就是CNN,卷…...

黑马JVM总结(八)

(1)StringTable面试题 1.8 1.6时 (2)StringTable的位置 jvm1.6时StringTable是常量池的一部分,它随着常量池存储在永久代当中,在1.7、1.8中从永久代变成了堆中,为什么做这个更改呢&#xff1f…...

开源网安入选广东省网络空间安全标准化技术委员会新技术及应用安全技术工作组成员单位

近日,第二届广东省网络空间安全标准化技术委员会(GD/TC 124)(以下简称省网安标委)正式成立。为进一步发挥省网安标委在支撑网络强国建设、推进网络安全产业高质量发展过程中,示范引领核心技术攻关、创新产品…...

Nginx配置指南:如何定位、解读与优化Linux上的Nginx设置

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…...

辉瑞与吉利德科学:制药巨头的新冠病毒之战

来源:猛兽财经 作者:猛兽财经 总结: (1)猛兽财经认为,华尔街低估了辉瑞(PFE)和吉利德科学(GILD)的前景,因为它们在开发新冠病毒疫苗和药物方面都…...

x86架构基础汇编知识

​ 通用寄存器 EAX 32位 函数返回值 AX 低16位 AH 高八位 AL 低八位 EBX 32位 ECX 32位 循环次数,this指针 EDX 32位 EBP 32位 栈底寄存器 ESP 32位 栈顶寄存器 ESI 源索引寄存器 EDI 目标索引寄存器 EIP 无法直接通过汇编操作 例子 mov al,0xff …...

ThreadLocal的原理

ThreadLocal是Java中的一个类&#xff0c;它提供了线程本地变量的功能。每个线程都可以独立地访问自己的ThreadLocal变量&#xff0c;并且不会受到其他线程的干扰。 public class ThreadLocal<T> { ThreadLocal的原理是通过使用一个ThreadLocalMap来存储每个线程的变量副…...

Chrome 108版(64-bit 108.0.5359.125)网盘下载

还在用Selenium的朋友们注意了&#xff0c;目前Chrome的最新版是116&#xff0c;而官方的Chromedriver只支持到115版。 可惜Google不提供旧版Chrome的下载方式&#xff0c;需要旧版的很难回去了。如果真的想要旧版的Chrome&#xff0c;只能民间自救。 我在2022年12月备份了C盘…...

Mars3d插件参考开发教程并在相关页面引入

问题场景&#xff1a; 1.在使用Mars3d热力图功能时&#xff0c;提示mars3d.layer.HeatLayer is not a constructor 问题原因: 1.mars3d的热力图插件mars3d-heatmap没有安装引用。 解决方案&#xff1a; 1.参考开发教程&#xff0c;找到相关的插件库&#xff1a;Mars3D 三维…...

Windows 性能突然打鸡血,靠 Bug 修复了多年顽疾

要说 的 Bug 集中地&#xff0c;当属资源管理器。 速度缓慢、卡顿、崩溃&#xff0c;不同设备、不同版本的用户都有不同的感受。 严格来说&#xff0c;这其实是 Windows 的传统艺能&#xff0c;要完美修复可不容易。 而作为小老弟的文件资源管理器&#xff0c;时不时来个无响…...

亚马逊封买家账号的原因有哪些

亚马逊可能封锁买家账号的原因有多种&#xff0c;主要是出于保护市场和维护平台秩序的考虑。以下是一些可能导致亚马逊封锁买家账号的常见原因&#xff1a; 1、涉及违规行为&#xff1a;如果买家违反了亚马逊的使用政策&#xff0c;如发表虚假评价、滥用退货政策、欺诈或盗窃等…...

1.0零基础尝试DCM通讯(c-store)

前言 本项目是对医院放疗及相关设备的互通互联。对dcm文件及数据协议是本项目的基础。 今天在项目组成员支持下,对dcm通讯进行了初步的尝试,有人之路,这个过程可以说是非常愉快,于是乎准备将这个愉快的过程记录,方便自己查阅和后来人。 c-store 本次的安装和测试使用的…...

vue之封装tab类组件

vue之封装tab类组件 vue之封装tab类组件CSS样式方面JS方面 vue之封装tab类组件 需求&#xff1a;点击【上一步】、【下一步】按钮&#xff0c;切换tab&#xff0c;且有淡入浅出的动画。 CSS样式方面 <div class"parent"><div class"childDiv" id…...

固定资产管理中净值怎么算

在资产管理的领域中&#xff0c;我们经常听到“净值”这个词。然而&#xff0c;对于许多人来说&#xff0c;净值的概念仍然模糊不清。本文将试图揭示固定资产管理的净值计算方法&#xff0c;并提供一些创新的观点。  我们需要明确什么是净值。在财务术语中&#xff0c;净值是…...

SQlite操作后如何正确退出

在 C 语言中&#xff0c;使用 SQLite 库进行数据库操作后&#xff0c;可以通过以下步骤来正常退出和关闭 SQLite 连接&#xff1a; 关闭数据库连接&#xff1a;在完成数据库操作后&#xff0c;使用 sqlite3_close() 函数来关闭 SQLite 连接。该函数接受一个指向 sqlite3 数据库…...

phpcmsV9.6.0sql注入漏洞分析

目录 前言 环境准备 漏洞点 看一看parse_str函数 看一看sys_auth函数 看一看get_one函数 全局搜索sys_auth($a_k, ENCODE) 查看哪里调用了 set_cookie 查看safe_replace函数 判断登录绕过 index的业务 加载modules/wap/index.php 加载modules/attachment/attachme…...

深入理解正则表达式:高效处理文本数据的利器

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 引言 正则表达式是一种…...

张雪峰说网络空间安全专业

网络空间安全专业是一个涵盖了计算机科学、信息安全、法律等多个领域的学科&#xff0c;旨在研究保护网络空间的信息系统和数据不被非法侵入、破坏、篡改、泄露的技术和管理手段。 网络安全专业的重要性 随着网络技术的发展&#xff0c;网络安全问题也日益凸显&#xff0c;黑客…...

day11-ArrayList学生管理系统

1.ArrayList 集合和数组的优势对比&#xff1a; 长度可变添加数据的时候不需要考虑索引&#xff0c;默认将数据添加到末尾 1.1 ArrayList类概述 什么是集合 ​ 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以发生改变 ArrayList集合的特点 ​ 长度可以变化…...

java springboot 如何实现小程序支付

今天给大家分享java小程序支付 首先我们学习任何东西要先看官网 下面是支付业务流程 我们具体用代码去实现上面的业务流程 功能截图 代码截图 pay(){//调用后台生成订单var orderNumber "20210101123456";var amount 0.01;WxPay.wxpay(app, amount, orderNumber…...

题目:2839.判断通过操作能否让字符串相等 I

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;2839. 判断通过操作能否让字符串相等 I - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 两字符串奇数位字符计数相等并且偶数位字符计数相等是可通过操作让字符串相等。 解题代码&#xff…...

【Prometheus】Prometheus+Grafana部署

Prometheus 概述 官网https://prometheus.io/docs/introduction/overview/ Prometheus 是一款基于时序数据库的开源监控告警系统&#xff0c;非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提供对应的…...

无CDN场景下的传统架构接入阿里云WAF防火墙的配置实践

文章目录 1.配置网站接入WAF防火墙1.1.配置网站接入方式1.2.填写网站的信息1.3.WAF防火墙生成CNAME地址 2.配置WAF防火墙HTTPS证书3.修改域名DNS解析记录到WAF防火墙4.验证网站是否接入WAF防火墙 传统架构接入WAF防火墙非常简单&#xff0c;配置完WAF网站接入后&#xff0c;将得…...

和鲸技术!国家气象信息中心人工智能气象应用基础技术平台上线

8 月 31 日&#xff0c;由和鲸科技支持的人工智能气象应用基础支撑技术平台 V1.0 正式于国家气象信息中心&#xff08;下简称“信息中心”&#xff09;上线发布。该平台主要为人工智能技术在气象领域的融合应用提供基础性支撑&#xff0c;目前&#xff0c;已为基于深度学习的短…...

GIT高级使用技巧

GIT高级使用技巧 导出GIT日志到文件 按照 <哈希> - <作者名> <作者邮箱地址> - <作者日期> : <commit描述> 的格式导出日志 git log --prettyformat:"%H - %an <%ae> - %ad : %s" master > log.txt筛选日志并按照从旧到新…...

谁有手机网站啊介绍一下/2345网址导航删除办法

样式 1. 浏览器调样式 2. 在线生成 http://www.w2bc.com/manual/css3%20generator/text-rotation.html 3. 参照已有系统的类似样式 复制代码 js 1. console定位问题 var data [{品名: 名字1, 数量: 4}, {品名: 名字2, 数量: 3}];console.table(data);2. underscorea. 简介Unde…...

大网站建设/企业软文营销发布平台

解析语法查询就是调用方法查询的原始查询 例如&#xff1a; 查询所有的查询器的语法为&#xff1a;*&#xff1a;*&#xff0c;因为lucene查询是根据term来做的&#xff0c;既是&#xff1a;key:value类型。*&#xff1a;*表示所有域中的所有值。 api调用语法解析 pom.xml 必须…...

自己做图片网站/北京seo学校

https://developer.tizen.org/downloads/sample-web-applications https://01.org/html5webapps/webapps 转载于:https://www.cnblogs.com/androidme/p/3250006.html...

给六人游做网站开发的/东莞推广平台有哪些

今天有人问到了这个问题&#xff0c;由一叶扁舟整理了资料如下&#xff0c;比较实用 方法一、head的加入代码 1234<head> <meta http-equiv"Cache-Control" content"no-transform" /> <meta http-equiv"Cache-Control" content…...

网站注册商是什么/产品关键词怎么找

给定一个正整数...

cdr做网站流程/网推拉新app推广平台

在正常负载情况下&#xff0c;为每个任务分配一个线程&#xff0c;能够提升串行执行条件下的性能。只要请求的到达率不超出服务器的请求处理能力&#xff0c;那么这种方法可以同时带来更快的响应性和更高的吞吐率。如果请求的到达速率非常高&#xff0c;且请求的处理过程是轻量…...