大数据导论-思维、技术与应用 第3章 大数据预处理_第1页
大数据导论-思维、技术与应用 第3章 大数据预处理_第2页
大数据导论-思维、技术与应用 第3章 大数据预处理_第3页
大数据导论-思维、技术与应用 第3章 大数据预处理_第4页
大数据导论-思维、技术与应用 第3章 大数据预处理_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据导论第三章CONTENTS目录PART01大数据预处理概述PART02数据清洗方法PART03数据集成与转换方法PART04数据削减PART05离散化和概念层次树PART06ETL工具KettlePART07数据转换工具SqoopPART08作业PART01大数据预处理概述大数据预处理负责将分散的、异构数据源中的数据如关系数据、网络数据、日志数据、文件数据等抽取到临时中间层后,进行清洗、转换、集成,最后加载到数据仓库或数据库中,成为通过数据分析、数据挖掘等提供决策支持的数据。大数据预处理整体架构数据预处理主要包括:数据清洗(DataCleaning)数据集成(DataIntegration)数据转换(DataTransformation)数据消减(DataReduction)大数据预处理将数据划分为结构化数据和半结构化/非结构化数据,分别采用传统ETL工具和分布式并行处理框架来实现。大数据预处理整体架构大数据预处理整体架构结构化数据可以存储在传统的关系型数据库中非结构化数据可以存储在新型的分布式存储中半结构化数据可以存储在新型的分布式NoSQL数据库中大数据预处理整体架构结构化数据和非结构化数据之间的数据可以按照数据处理的需求进行迁移。比如:为了进行快速并行处理,需要将传统关系型数据库中的结构化数据导入到分布式存储中,可以利用Sqoop等工具,先将关系型数据库的表结构导入分布式数据库(Hive),然后再向分布式数据库的表中导入结构化数据。数据质量问题分类数据清洗在汇聚多个维度、多个来源、多种结构的数据之后,对数据进行抽取、转换和集成加载。在这个过程中,除了更正、修复系统中的一些错误数据之外,更多的是对数据进行归并整理,并储存到新的存储介质中。其中,数据的质量至关重要。常见的数据质量问题可以根据数据源的多少和所属层次分为四类:单数据源定义层单数据源实例层多数据源的定义层多数据源的实例层数据质量问题分类数据质量问题分类单数据源定义层违背字段约束条件比如:日期出现6月31日字段属性依赖冲突比如:两条记录描述同一个人的某一个属性,但数值不一致违反唯一性比如:同一个主键ID出现了多次单数据源实例层单个属性值含有过多信息、拼写错误、空白值、噪音数据、数据重复、过时数据等数据质量问题分类多数据源的定义层同一个实体的不同称呼比如:custom_id,custom_num同一种属性的不同定义比如:字段长度定义不一致、字段类型不一致等多数据源的实例层数据的维度、粒度不一致比如:有的按GB记录存储量,有的按照TB记录存储量;有的按照年度统计,有的按照月份统计数据重复、拼写错误等PART02数据清洗方法现实世界的数据常常是有噪声、不完全的和不一致的。数据清洗过程通过填补遗漏数据、消除异常数据、平滑噪声数据,以及纠正不一致的数据。遗漏数据处理假设在分析一个商场销售数据时,发现有多个记录中的属性值为空,如顾客的收入属性,对于为空的属性值,可以采用以下方法进行遗漏数据处理:忽略该条记录。手工填补遗漏值。利用缺省值填补遗漏值。利用均值填补遗漏值。利用同类别均值填补遗漏值。利用最可能的值填补遗漏值。最后一种方法是一种较常用的方法。噪声数据处理噪声是指被测变量的一个随机错误和变化。下面通过给定一个数值型属性,如价格,来说明平滑去噪的具体方法。方法被分为四种:Bin方法聚类方法人机结合检查方法回归方法噪声数据处理Bin方法Bin方法通过利用相应被平滑数据点的周围点(近邻),对一组排序数据进行平滑。排序后数据分配到若干桶(称为Buckets或Bins)中。对Bin的划分方法一般有两种,一种是等高方法,即每个Bin中的元素的个数相等;另一种是等宽方法,即每个Bin的取值间距(左右边界之差)相同。噪声数据处理例如:首先对价格数据进行排序,然后将其划分为若干等高度的Bin,即每个Bin包含三个数值

Bin均值平滑对每个Bin中所有值均用该Bin的均值替换。图中第一个Bin中4、8、15均用该Bin的均值9替换Bin边界平滑对于给定的Bin,利用每个Bin的边界值(最大值或最小值),替换该Bin中的所有值。一般讲,每个Bin的宽度越宽,其平滑效果越明显。噪声数据处理聚类方法通过聚类分析可帮助发现异常数据。相似或相邻近的数据聚合在一起形成了各个聚类集合,而那些位于这些聚类集合之外的数据对象,自然而然就被认为是异常数据。噪声数据处理人机结合检查方法通过人与计算机检查相结合方法,可以帮助发现异常数据。如:利用基于信息论方法可帮助识别用于分类识别手写符号库中的异常模式;所识别出的异常模式可输出到一个列表中;然后由人对这一列表中的各异常模式进行检查,并最终确认无用的模式(真正异常的模式)。这种人机结合检查方法比单纯利用手工方法手写符号库进行检查要快许多。噪声数据处理回归方法可以利用拟合函数对数据进行平滑。如:借助线性回归方法,包括多变量回归方法,就可以获得的多个变量之间的一个拟合关系,从而达到利用一个(或一组)变量值来帮助预测另一个变量取值的目的。利用回归分析方法所获得的拟合函数,能够帮助平滑数据及除去其中的噪声。不一致数据处理现实世界的数据库常出现数据记录内容的不一致,其中一些数据不一致可以利用它们与外部的关联手工加以解决。例如:输入发生的数据录入错误一般可以与原稿进行对比来加以纠正。还有一些方法可以帮助纠正使用编码时所发生的不一致问题。知识工程工具也可以帮助发现违反数据约束条件的情况。PART03数据集成与转换方法数据集成即将来自多个数据源的数据,结合在一起并形成一个统一数据集合,以便为数据处理工作的顺利完成提供完整的数据基础。数据集成处理数据处理常常涉及数据集成操作,即将来自多个数据源的数据。如:数据库、数据立方、普通文件等,结合在一起并形成一个统一数据集合,以便为数据处理工作的顺利完成提供完整的数据基础。在数据集成过程中,需要考虑解决以下几个问题:模式集成(SchemaIntegration)问题冗余问题数据值冲突检测与消除数据集成处理1.模式集成(SchemaIntegration)问题就是如何使来自多个数据源的现实世界的实体相互匹配,这其中就涉及到实体识别问题。例如:如何确定一个数据库中的“custom_id”与另一个数据库中的“custom_number”是否表示同一实体。数据库与数据仓库的元数据可以帮助避免在模式集成时发生错误。数据集成处理2.冗余问题是数据集成中经常发生的另一个问题。若一个属性可以从其它属性中推演出来,那这个属性就是冗余属性。例如:一个顾客数据表中的平均月收入属性,就是冗余属性,显然它可以根据月收入属性计算出来。此外属性命名的不一致也会导致集成后的数据集出现数据冗余问题。数据集成处理3.数据值冲突检测与消除如对于一个现实世界实体,其来自不同数据源的属性值或许不同。产生这样问题原因可能是表示的差异、比例尺度不同、或编码的差异等。例如:重量属性在一个系统中采用公制,而在另一个系统中却采用英制。价格属性不同地点采用不同货币单位。这些语义的差异为数据集成提出许多问题。数据转换处理所谓数据转换就是将数据转换或归并从而构成一个适合数据处理的描述形式。数据转换包含以下处理内容:平滑处理,帮助除去数据中的噪声

主要技术方法有:Bin方法、聚类方法和回归方法。合计处理,对数据进行总结或合计(Aggregation)操作

例如:每天数据处理常常涉及数据集成操作销售额(数据)可以进行合计操作以获得每月或每年的总额。这一操作常用于构造数据立方或对数据进行多细度的分析。数据转换处理数据泛化处理(Generalization)。所谓泛化处理就是用更抽象(更高层次)的概念来取代低层次或数据层的数据对象。

例如:街道属性可以泛化到更高层次的概念,诸如:城市、国家。

对于数值型的属性也可以映射到更高层次概念如年龄属性。如:年轻、中年和老年。规格化。规格化就是将有关属性数据按比例投射到特定小范围之中。如将工资收入属性值映射到0到1范围内。属性构造。根据已有属性集构造新的属性,以帮助数据处理过程。对大规模数据进行复杂的数据分析通常需要耗费大量的时间。尽管在大数据时代,数据处理能力有了极大的提升,但是在有些情况下对全部的数据进行复杂的数据分析还是不现实甚至不可行,特别是在需要进行交互式数据挖掘时。PART04数据削减数据削减数据消减技术的主要目的就是用于帮助从原有巨大数据集中获得一个精简的数据集,并使这一精简数据集保持原有数据集的完整性。数据削减的主要策略有以下几种:数据立方合计:这类合计操作主要用于构造数据立方(数据仓库操作)。维数消减:主要用于检测和消除无关、弱相关、或冗余的属性或维(数据仓库中属性)。数据压缩:利用编码技术压缩数据集的大小。数据削减数据块消减:利用更简单的数据表达形式。

如:参数模型、非参数模型(聚类、采样、直方图等),来取代原有的数据。离散化与概念层次生成:所谓离散化就是利用取值范围或更高层次概念来替换初始数据。利用概念层次可以帮助挖掘不同抽象层次的模式知识。离散化技术方法可以通过将属性(连续取值)域值范围分为若干区间,来帮助消减一个连续(取值)属性的取值个数。PART05离散化和概念层次树离散化和概念层次树离散化技术方法可以通过将属性(连续取值)域值范围分为若干区间,来帮助消减一个连续(取值)属性的取值个数。可以用一个标签来表示一个区间内的实际数据值。在基于决策树的分类挖掘中,消减一个属性取值个数的离散化处理是一个极为有效的数据预处理步骤。概念层次树可以通过利用较高层次概念替换低层次概念而减少原来数据集。虽然一些细节在数据泛化过程中消失了,但这样所获得的泛化数据或许会更易于理解、更有意义。在消减后的数据集上进行数据挖掘显然效率更高。如右图,年龄属性概念层次树。数值概念层次树由于数据范围变化较大,构造数值属性的概念层次树是一件较为困难的事情。利用数据分布分析,可以自动构造数值属性的概念层次树。其中五种主要构造方法如下:Bin方法直方图方法聚类分析方法基于熵的离散化方法自然划分分段方法数值概念层次树Bin方法Bin方法用于数据平滑。这些应用也是一种形式的离散化。例如:属性的值可以通过将其分配到各Bin中而将其离散化。利用每个Bin的均值和中数替换每个Bin中的值(利用均值或中数进行平滑)。循环应用这些操作处理每次操作结果,就可以获得一个概念层次树。直方图方法直方图方法也可以用于离散化处理。例如:在等宽直方图中,数值被划分为等大小的区间,如:(0,100]、(100,200]、…、(900,1000]。循环应用直方图分析方法处理每次划分结果,从而最终自动获得多层次概念树,而当达到用户指定层次水平后划分结束。数值概念层次树聚类分析方法聚类算法可以将数据集划分为若干类或组。每个类构成了概念层次树的一个节点;每个类还可以进一步分解为若干子类,从而构成更低水平的层次。当然类也可以合并起来构成更高层次的概念水平。基于熵的离散化方法基于熵的方法构造数值概念层次树可以消减数据集规模。与其它方法不同的是基于熵的方法利用了类别信息,这就使得边界的划分更加有利于改善分类挖掘结果的准确性。数值概念层次树自然划分分段方法尽管Bin方法、直方图方法、聚类方法和基于熵的离散化方法均可以帮助构造数值概念层次树,但许多时候用户仍然使用将数值区间划分为归一的、易读懂的间隔,以使这些间隔看起来更加自然直观。如:将年收入数值属性取值区域分解为[50000,60000]区间要比利用复杂聚类分析所获得的[51265,60324]区间要直观的多。类别概念层次树类别数据是一种离散数据。类别属性可取有限个不同的值且这些值之间无大小和顺序。比如:国家、工作、商品类别等。构造类别属性的概念层次树的主要方法有如下几种:属性值的顺序关系已在用户或专家指定的模式定义说明。通过数据聚合来描述层次树。定义一组属性但不说明其顺序。类别概念层次树属性值的顺序关系已在用户或专家指定的模式定义说明构造属性(或维)的概念层次树涉及一组属性;通过在(数据库)模式定义时指定各属性的有序关系,可以帮助轻松构造出相应的概念层次树。例如:一个关系数据库中的地点属性:街道、城市、省和国家。根据数据库模式定义时的描述,可以很容易地构造出(含有顺序语义)层次树,即:街道<城市<省<国家。类别概念层次树通过数据聚合来描述层次树这是概念层次树的一个主要(手工)构造方法。在大规模数据库中,想要通过穷举所有值而构造一个完整概念层次树是不切实际的,但可以对其中一部分数据进行聚合说明。例如:在模式定义基础构造了省和国家的层次树,这时可以手工加入:{安徽、江苏、山东}⊂华东地区;{广东、福建}⊂华南地区等“地区”中间层次。类别概念层次树定义一组属性但不说明其顺序用户可以将一组属性组织在一起以便构成一个层次树,但不说明这些属性相互关系。这就需要自动产生属性顺序以便构造一个有意义的概念层次树。没有数据语义的知识,想要获得任意一组属性的顺序关系是很困难的。一个重要线索:高水平概念通常包含了若干低层次概念。定义属性的一个高水平概念通常包含了比一个低层次概念所包含要少一些的不同值。根据这一观察,就可以通过给定属性集中每个属性的一些不同值自动构造一个概念层次树。拥有最多不同值的属性被放到层次树最低层;拥有的不同值数目越少在概念层次树上所放的层次越高。类别概念层次树定义一组属性但不说明其顺序。例如:假设用户针对商场地点属性选择了一组属性:街道、城市、省和国家,但没有说明这些属性层次顺序关系。地点的概念层次树可以通过以下步骤自动产生:首先根据每个属性不同值的数目从小到大进行排序;从而获得这样的顺序,其中括号内容为相应属性不同值的数目。国家(15)、省(65)、城市(3567)和街道(674339)。根据所排顺序自顶而下构造层次树,即第一个属性在最高层,最后一个属性在最低层。类别概念层次树定义一组属性但不说明其顺序。需要注意的上述启发知识并非始终正确。如:在一个带有时间描述的数据库中,时间属性涉及20个不同年、12个不同月和1个不同星期的值,则根据上述自动产生概念层次树的启发知识,可以获得:年<月<星期。星期在概念层次树的最顶层,这显然是不符合实际的。ETL分别是Extract、Transform和Load三个单词的首字母缩写也即数据抽取、转换、装载的过程,但经常简称其为数据抽取。PART06ETL工具KettleETL工具简介ETL分别是Extract、Transform和Load三个单词的首字母缩写也即数据抽取、转换、装载的过程,但经常简称其为数据抽取。Extract(抽取)将数据从各种原始的业务系统中读取出来,这是所有工作的前提。一般抽取过程需要连接到不同的数据源,以便为随后的步骤提供数据。这一步简单而琐碎,但实际上是ETL解决方案的成功实施的一个主要障碍。Transform(转换)按照预先设计好的规则将抽取到的数据进行转换,使本来异构的数据格式能统一起来。任何对数据的处理过程都是转换,这些处理过程通常包括(但不限于)下面一些操作:ETL工具简介Transform(转换)移动数据根据规则验证数据数据内容和数据结构的修改将多个数据源的数据集成根据处理后的数据计算派生值和聚集值Load(装载)将转换完的数据按计划增量或全部导入到数据仓库中。也就是说将数据加载到目标系统的所有操作。ETL工具简介使用ETL工具实现数据清洗的实现方法大致步骤如下:首先,在理解源数据的基础上实现数据表属性一致化。为解决源数据的同义异名和同名异义的问题,可通过元数据管理子系统,在理解源数据的同时,对不同表的属性名根据其含义重新定义其在数据挖掘库中的名字,并以转换规则的形式存放在元数据库中,在数据集成的时候,系统自动根据这些转换规则将源数据中的字段名转换成新定义的字段名,从而实现数据挖掘库中的同名同义。其次,通过数据缩减,大幅度缩小数据量。由于源数据量很大,处理起来非常耗时,所以可以优先进行数据缩减,以提高后续数据处理分析效率。ETL工具简介最后,通过预先设定数据处理的可视化功能节点,达到可视化的进行数据清洗和数据转换的目的。针对缩减并集成后的数据,通过组合预处理子系统提供各种数据处理功能节点,能够以可视化的方式快速有效完成数据清洗和数据转换过程。ETL工具必须对抽取到的数据能够进行灵活计算、合并、拆分等转换操作。目前,ETL工具的典型代表有:商业软件:Informatica、IBMDatastage、OracleODI、MicrosoftSSIS等。开源软件:Kettle、Talend、CloverETL、Ketl,Octopus等。Kettle简介Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle允许用户管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述想做什么,而不是怎么做。Kettle家族目前包括4个产品:Spoon、Pan、CHEF、Kitchen。Spoon允许用户通过图形界面方便地设计ETL转换过程(Transformation)。Pan允许用户批量运行由Spoon设计的ETL转换。Pan是一个后台执行的程序,没有图形界面。允许用户创建任务(Job)脚本,主要用于复杂的数据仓库更新工作。Kitchen允许用户批量运行由Chef设计的任务,通常是使用一个调度器从而可以方便地启动和控制ETL过程。Kettle使用定义一个名为sourcetable的表,用于记录云平台中的Host、Cluster和DataCenter的对应关系以及获取记录的datetime和Host的网卡数。源数据库的数据库表结构:Kettle使用源数据的抽取Kettle配置源数据库连接,“文件”→“新建”→“转换”,左侧Design栏,选择“输入”→“表输入”,创建一个名为“源数据输出”的表输入步骤,双击进入“源数据输出”,“数据库连接”处选择“新建”一个“源数据库”连接,配置源MySQL数据库的参数信息并测试连接。Kettle使用源数据的抽取根据业务需求,首先选择出所需要处理的数据,通过双击选择“源数据输出”步骤,编辑SQL,即获取所需要抽取的数据模型。而在这此步骤的操作流程中,需要我们注意的是SQL语句的编辑。SELECTid,datetime,HostName,Cluster,DataCenter,Nic_Number,cpu_total_ghzFROM‘sourcetable’WHEREtimestamp(DATA_FORMAT(datatime,’%Y-%m-%d’))=timestamp(DATA_FORMAT(date_add(now(),interval1second))Kettle使用Kettle使用源数据的抽取编辑完毕SQL语句后,通过“预览”按钮就可以预览执行SQL的结果。Kettle使用数据清洗和转换对上一步的预览得到的数据还需要做数据清洗和转换,比如对数据的升降排序、和其他数据表链接、对空值的处理、对重复值的处理等,主要包括:数据补缺数据替换过滤行行排序行链接行去重行合并Kettle使用数据清洗和转换例如:数据排序设置Kettle使用数据清洗和转换例如:数据空值处理Kettle使用目标数据的上载创建一个名为“目标数据输入”的表输出步骤,配置目标数据库的参数信息。左侧Design栏选择“输出”→“表输出”,创建一个“目标数据输入”的表输出步骤,在“数据库连接”处新建一个“目标数据库”,输入对应的目标数据库参数信息并测试Kettle和MySQL数据库成功连接,然后选择目标数据库表。Kettle使用目标数据的上载目标数据库配置并能正常连接后,还需要配置数据流字段和目标数据库表字段的对应关系。其中“表字段”为目标数据表字段,“流字段”为经过Kettle处理的数据流字段,二者名称可以一致也可以不一致,在配置的时候做好对应即可。至此,源数据的抽取,数据流的清洗转换和目标数据库的上载已经配置完成,整个Kettle的转换脚本也就完成了。Sqoop用于在Hadoop、Hive和HBase与传统的数据库(MySQL、Oracle和PostSQL等)间进行数据的传递。PART07数据转换工具SqoopSqoop简介Sqoop(SQL–to–Hadoop)是一款方便的在传统关系型数据库与Hadoop之间进行数据迁移的工具。它可以将一个关系型数据库(中的数据导入到Hadoop中;也可以将Hadoop中的数据导入到关系型数据库中;可以使用全表导入和增量导入方式传输数据。Sqoop功能:Sqoop简介Sqoop工具接收到客户端的shell命令或者JavaAPI命令后,通过Sqoop中的任务翻译器(TaskTranslator)将命令转换为对应的MapReduce任务,而后将关系型数据库和Hadoop中的数据进行相互转移,进而完成数据的拷贝。Sqoop的架构:Sqoop简介借助于数据库描述源数据的格式,Sqoop可以自动完成大部分数据转移工作。Sqoop使用MapReduce导入和导出数据不但可以通过并发提高数据转移速度,还可以保证数据转移的容错能力。Sqoop基本用法用户可以使用Sqoop从关系型数据库导入数据到HDFS。Sqoop逐行从数据库表中读入数据到HDFS。因为导入过程是并行进行的,所以会产生一组HDFS文件。产生的文件可以是正文文件,原来数据库表中的列之间用分号或者制表符进行隔离。产生的文件也可以是二进制Avro文件,还可以是由串行化记录组成的顺序文件(SequenceFiles)Sqoop导入数据的时候会生成一个封装了导入数据库表单行数据的Java类。Sqoop就是使用该Java类完成数据导入的。同时,开发工程师也可以在后续的MapReduce操作中使用该类进行数据处理。该类可以对SequenceFiles中的数据进行反串行化,也可以把数据串行化到SequenceFiles中。Sqoop基本用法对于导出的正文文件,该类可以对文件进行解析获取每行每列的数据。所以,开发者通过使用该类能够快速开发处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论