2017年软件2017,Vol.38,No.12第38卷第12期COMPUTERENGINEERING&SOFTWARE国际IT传媒品牌作者简介:封富君(1978),女,讲师,主要研究方向:信息安全、大数据;姚俊萍(1978),女,副教授,研究方向:信息安全、大数据;李新社(1965),男,副教授,研究方向:信息安全、大数据;马俊春(1983),女,讲师,研究方向:信息安全、大数据。大数据环境下的数据清洗框架研究封富君,姚俊萍,李新社,马俊春(西安高新技术研究所,陕西西安710025)摘要:在大数据环境下会不可避免的存在一些脏数据,严重的影响了数据质量,而数据清洗是提高数据质量的重要方法,对数据清洗框架的研究可以帮助大数据的系统决策。提出了一个大数据环境下数据清洗的一般框架,并对核心的数据清洗模块中的三个子模块进行详细的分析,包括不完整数据清洗子模块、不一致数据修复子模块和相似重复记录数据清洗子模块,且讨论了其清洗的具体流程。关键词:大数据;数据质量;数据清洗;相似重复记录中图分类号:TP393文献标识码:ADOI:10.3969/j.issn.1003-6970.2017.12.037本文著录格式:封富君,姚俊萍,李新社,等.大数据环境下的数据清洗框架研究[J].软件,2017,38(12):193196ResearchontheDataCleaningFrameworkinBigDataFENGFu-jun,YAOJun-ping,LIXin-she,MAJun-chun(ResearchInst.ofHigh-Tech,ShaanXiXi'an,710025,China)【Abstract】:Somedirtydataexistsinevitablyunderbigdataenvironment,anditseriouslyaffectsthedataquality,whilethetechnologyofdatacleaningisoneofthemostimportantmothestoimprovedataquality,andthere-searchesonthedatacleaningframeworkarehelpfulforbigdatadecision.Ageneralframeworkofdatacleaninginbigdataisproposed,thecoredatacleaningmoduleincludesthreesubmodules,whichareimcompletedrecordscleaning,inconsistentdatarepairingandapproximateduplicaterecordscleaning,andtheprocessesofdatacleaningarediscussedspecifically.【Keywords】:Bigdata;Dataquality;Datacleaning;Approximateduplicaterecords0引言大数据环境呈现出“4V+1C”的特点:数据量巨大(Volume)、数据类型繁多(Variety)、价值密度低(Value)、处理速度快(Velocity)和具有较强的复杂性(Complexity),原始大数据信息中混杂着许多不完整、错误和重复的“不清洁”数据,导致大数据存在着不一致、不完整性、低价值密度、不可控和不可用的特性[1-2]。面对如此庞大的数据量,人们希望从海量数据中挖掘出有价值的信息或知识,为决策者提供参考。由于数据录入错误、不同表示方法的数据源合并或迁移等原因,不可避免的使系统存在冗余数据、缺失数据、不确定数据和不一致数据等诸多情况,这样的数据称为“脏数据”,严重影响了数据利用的效率和决策质量。因此,为使系统中的数据更加准确、一致,并能够支持决策,数据清洗变得尤为重要,数据清洗的任务就是过滤或修改那些不符合要求的数据,输出符合系统要求的清洁数据。大数据技术由传统的数据技术发展而来,继承了传统数据技术的概念与分析方法[3-4],例如数据清洗、数据仓库等。传统的数据清洗技术可以提供高质量的数据,并提高了数据分析的效率和正确性。大数据环境下的数据清洗同样是大数据分析的基础,是整个大数据处理的起始阶段,决定了大数据处理结果的数据质量。本文对大数据环境下的数据清洗技术进行分析,并提出一个一般性的数据清洗框架。第38卷第12期软件194《软件》杂志欢迎推荐投稿:cosoft@vip.163.com1数据清洗定义产生数据质量问题的原因很多,例如:缩写的滥用会造成数据的混乱;相似重复的数据记录会增加数据库的负荷,降低数据处理的效率;人为的失误或系统的故障会造成缺失数据、不完整数据或异常数据等,这些原因都会导致“脏数据”的产生。数据清洗是将数据库精简以除去重复记录,并使剩余部分转换成符合标准的过程;狭义上的数据清洗特指在构建数据仓库和实现数据挖掘前对数据源进行处理,使数据实现准确性(accuracy)、完整性(compliteness)、一致性(consistency)、适时性(timeliness)、有效性(validity)以适应后续操作的过程。从提高数据质量的角度来说,凡是有助于提高数据质量的数据处理过程,都可以认为是数据清洗。数据清洗是对数据进行处理以保证数据具有较好质量的过程,即得到干净数据的过程。对数据清洗定义的理解需要注意以下问题[5]:(1)数据清洗洗掉的是“数据错误”而不是“错误数据”,目的是要解决“脏数据”的问题,即不是将“脏数据”洗掉,而是将“脏数据”洗干净。(2)数据清洗主要解决的是实例层数据质量问题,对一个给定的数据集,实例层数据质量问题是有限的、可检测的和可隔离的。(3)数据清洗不能完全解决所有的数据质量问题,即通过数据清洗提高数据质量的程度是有限度的,如对缺失值的估计有不确定性。因此,对数据清洗的正确理解应该是“在尽可能不破坏有用信息的前提下,尽可能多地去除数据错误”,数据清洗可能损失有用信息,也可能产生新的数据质量问题。2数据清洗的基本原理数据清洗原理是利用数据挖掘相关技术,按照设计好的清理规则或算法将未经清洗的数据,即脏数据,转化为满足数据挖掘所需要的数据,如图1所示。数据清洗的一般过程是:对收集到的信息进行数据分析得到“脏数据”;定义数据清洗规则和清洗算法,对数据进行手工清洗或自动清洗,直到处理后的数据满足数据清洗的要求。手工清洗的特点是速度慢,准确度高,一般适用于小规模的数据清洗,在较大规模的数据处理中,手工清洗的速度和准确性会明显下降,通常采用自动清洗方式。自动清洗的优点是清洗的完全自动化,但是需要根据特定的数据清洗算法和清洗方案,编写数据清洗程序,使其自动执行清洗过程。缺点是实现过程难度较大,后期维护困难。在大数据环境下,由于数据量的巨大,数据清洗通常采用自动清洗的方式来完成。图1数据清洗原理Fig.1Datacleaningprinciple3数据清洗系统框架对数据清洗框架的研究也较多,文献[6]将逻辑规范层和物理实现层分离,提出了一种描述性语言,可以在逻辑层上指定数据清洗过程所需采取的数据转化操作,要求用户的交互。文献[7]实现了一个可扩展的数据清洗工具AJAX,文献[8]提出了数据清洗的一个交互式系统框架,它集成了数据转化和差异检测,具有良好的交互性。文献[9]提出了一个粗粒度的、紧耦合的自动化数据清洗框架。本文提出了一个大数据环境下数据清洗的一般性系统框架,如图2所示。该框架分为三部分:外部的支持模块、数据清洗模块和内部的数据库模块。其中外部的支持模块主要包括系统日志、监控系统和访问接口;内部的数据库模块主要包括在数据清洗过程中需要调用的数据库,例如字典库、算法库和规则库等。数据清洗模块是数据清洗系统的主要模块,数据清洗模块根据制定的算法和规则在内部数据库中进行搜索和调用,并接受外部支持模块的访问和监控。数据清洗模块主要列出了在数据清洗过程中研究最多的不完整数据清洗、不一致数据清洗和重复数据清洗三个子模块。3.1不完整数据清洗子模块在复杂网络环境下,当数据上报、接口调用时封富君等:大数据环境下的数据清洗框架研究195《软件》杂志欢迎推荐投稿:cosoft@vip.163.com图2数据清洗系统框架Fig.2Datacleaningframework会产生大量的缺失值,因此不完整数据是不可避免的现象,而不完整的数据对大数据环境下的决策具有一定的影响。缺失值主要包括属性值错误和空值两个方面。属性错误值检测主要包括括统计法、聚类方法以及关联规则方法[10],这些方法都是以统计和总结规律的方式计算并查找错误值,进而修正错误数据;而空值检测主要采用人工填写空缺值法手工检测并填写属性值,也可以采用属性的平均值、中间值、最大值、最小值或更为复杂的概率统计函数值填充空缺值法。不完整数据清洗子模块流程如图3所示。图3不完整数据清洗流程Fig.3Incompletedatacleaningprocess主要过程为:(1)对获得的数据源进行缺失值的参数估计,为后续的数据处理提供所需数据;(2)根据数据填充算法对不完整数据进行缺失值的数据填充;(3)输出填充后的完整数据。3.2不一致数据修复子模块大数据环境下数据量的剧增使得获得的数据源会由于各种原因违反数据定义的完整性约束,存在大量的不一致数据。不一致数据修复子模块的功能就是将不一致的数据进行修复,使得其符合数据的完整性约束,保持数据的一致性,其流程如图4所示。图4不一致数据修复流程Fig.4Inconsistentdatarepairingprocess不一致数据修复子模块主要过程为:(1)将数据源按照规定的数据格式进行检测,并执行预处理,方便后续的处理;(2)对预处理后的数据进行数据不一致的检测,如果与原始的数据完整性约束不一致,则进行数据修复的过程,得到修复后的数据。通常修复后的数据有可能带来新的数据不一致,因此要将修复结果再次进行不一致的检测与修复,直到符合要求为止。(3)最后将修复的数据结果还原为原格式,以方便其他系统的使用。3.3相似重复数据清洗子模块相似重复数据在“脏数据”中占的比重较大,其产生的原因较多,例如数据录入时的拼写错误,缩写不同或存储类型不同等,通常表现为多条记录所表达的含义相同,或同一目标实体的记录虽然在形式上有所不同,但其描述的目标却相同。这些相似重复记录的数据特征并不明显,对数据识别和数据清洗造成了很大的难度。因此,对相似重复记录数据进行清洗,可以提高数据库的使用率,降低系第38卷第12期软件196《软件》杂志欢迎推荐投稿:cosoft@vip.163.com统消耗,并提高数据质量。重复数据检测主要分为基于字段和基于记录的重复检测。基于字段的重复检测算法主要包括编辑距离算法等。基于记录的重复检测算法主要包括排序邻居算法、优先队列算法、N-Gram聚类算法[11]。重复数据清洗子模块采用排序合并算法,如图5所示。重复数据清洗的主要过程为:(1)通过对源数据库属性段的分析,找到属性的关键值,并根据关键值对源数据库中的数据记录进行排序,可以选择自上而下或者自下而上的顺序来排序;图5相似重复数据清洗流程Fig.5Approximateduplicatedatacleaningprocess(2)按顺序扫描数据库中的每一条记录,并将它与相邻的记录进行比较,进行记录的相似度匹配计算;(3)如果计算出的相似度数值大于系统设定的阈值,说明该记录或连续的几条记录为相似重复记录,则进行数据记录的合并或删除操作;否则,扫描下一条数据记录,重复以上第2)和3)的步骤。(4)当所有数据记录检测完毕,输出最后结果。4结语大数据环境下数据具有数据量大、价值密度低等的特点,由于拼写错误、数据合并等原因导致信息中包含一些缺失数据、异常数据和不一致数据,这样的数据称为“脏数据”,严重影响了数据利用的效率和决策质量,而数据清洗技术则可以提高数据质量,使系统中的数据更加准确、一致,并能够支持决策。数据清洗技术在各个领域中应