数据处理方法及装置与流程

文档序号:18618862发布日期:2019-09-06 22:17阅读:188来源:国知局
本发明涉及数据处理领域,具体而言,涉及一种数据处理方法及装置。
背景技术
::风险控制中的反欺诈技术需要分析多维度的数据,通过对有效数据的采集和分析,相关技术中海量数据大多基于hive存储和离线计算,数据落地到hive表通常采用的是传统hivesql的写法和mapreducemr框架。但是,目前的mapreduce落地算法局限于对单个表的落地,并没有一套通用的针对海量数据做批量落地的方案,导致数据落地效率较低,灵活度较小。针对上述的问题,目前尚未提出有效的解决方案。技术实现要素:本发明实施例提供了一种数据处理方法及装置,以至少解决相关技术中仅能对单个表的数据落地的方式,效率低的技术问题。根据本发明实施例的一个方面,提供了一种数据处理方法,包括:从所述数据中清洗出目标数据;对多个所述目标数据进行去重处理;将去重后的多个所述目标数据,通过动态分区法,同时落地存储到多个表的存储文件中,使得表的存储文件可控且大小均衡。可选的,从所述数据中清洗出目标数据包括:确定多个所述表分别对应的表名;对所述数据进行分析,读取与多个所述表名对应的表名标识字段;根据所述表名标识字段,确定所述表名对应的配置文件;根据所述配置文件,分别从多个所述数据的字段中计算所述字段对应的值,其中,所述目标数据包括所述表名标识字段和所述值。可选的,对多个所述目标数据进行去重处理包括:建立多个所述目标数据的组合键,其中,所述组合键包括所述目标数据对应的表名标识字段,所述目标数据的日期,以及所述目标数据的标识id;根据所述组合键,通过映射归约mapreduce框架进行去重。可选的,根据所述组合键,通过所述mapreduce框架进行去重包括:通过所述mapreduce框架的map部分,根据所述组合键对多个所述目标数据进行排序;根据所述标识id,将分类好的多个所述目标数据分发到不同的存储区;通过所述mapreduce框架的reduce部分,根据所述组合键对所述目标数据进行组合,将组合后的所述目标数据,输入去重函数;根据所述去重函数对所述目标数据进行去重。可选的,根据所述标识id,将分类好的多个所述目标数据分发到不同的存储区之后包括:将分发到不同的存储区的目标数据进行随机混合;通过所述mapreduce框架的reduce部分,根据所述组合键对随机混合后的多个所述目标数据进行再次排序。可选的,根据所述组合键对多个所述目标数据进行排序,与根据所述组合键对随机混合后的多个所述目标数据进行再次排序的方式相同,具体包括:根据所述组合键中的所述表名标识字段多个所述目标数据进行排序;在所述目标数据的表名标识字段相等的情况下,根据所述目标数据的标识id进行排序;在所述目标数据的所述标识数据id相等的情况下,根据所述目标数据的日期进行排序。可选的,根据所述组合键对所述目标数据进行组合,将组合后的所述目标数据,输入去重函数包括:通过所述表名标识字段对所述目标数据进行组合;在所述表名标识字段相同的情况下,根据所述标识id进行组合;在所述标识id相同的情况下,根据所述标识id相同的所述目标数据,确定所述目标数据的日期最早的组合键;将所述表名标识字段与所述标识id均相同的多个目标数据,以及所述日期最早的组合键,输入所述去重函数;由所述去重函数输出日期最早的所述表名标识字段和所述标识id对应的目标数据。可选的,将去重后的多个所述目标数据,同时落地存储到多个表的存储文件中包括:根据所述表的大小要求,确定所述表的存储所述目标数据的个数;根据所述个数,所述表名标识字段,以及所述标识id,通过多输出工具multioutputs将多个不同的目标数据写入不同的表的存储路径;根据所述存储路径,将多个所述目标数据进行同时落地,存储到对应的表的存储文件中。根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:清洗模块,用于从所述数据中清洗出目标数据;去重模块,用于对多个所述目标数据进行去重处理;落地模块,用于将去重后的多个所述目标数据,同时落地存储到多个表的存储文件中。根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述中任意一项所述的方法。根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的方法。在本发明实施例中,采用从数据中清洗出目标数据;对多个目标数据进行去重处理;将去重后的多个目标数据,同时落地存储到多个表的存储文件中的方式,通过对大量数据的清洗和去重,然后同时进行落地,达到了对多个表同时进行数据落地的目的,从而实现了提高数据落地的效率的技术效果,进而解决了相关技术中仅能对单个表的数据落地的方式,效率低的技术问题。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据本发明实施例的一种数据处理方法的流程图;图2是根据本发明实施方式的数据处理功能框架的示意图;图3是根据本发明实施例的一种数据处理装置的示意图。具体实施方式为了使本
技术领域
:的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。根据本发明实施例,提供了一种数据处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本发明实施例的一种数据处理方法的流程图,如图1所示,该方法包括如下步骤:步骤s102,从数据中清洗出目标数据;步骤s104,对多个目标数据进行去重处理;步骤s106,将去重后的多个目标数据,通过动态分区法,同时落地存储到多个表的存储文件中,且保证存储文件数量可控、大小均衡。通过上述步骤,采用从数据中清洗出目标数据;对多个目标数据进行去重处理;将去重后的多个目标数据,同时落地存储到多个表的存储文件中的方式,通过对大量数据的清洗和去重,然后同时进行落地,达到了对多个表同时进行数据落地的目的,从而实现了提高数据落地的效率的技术效果,进而解决了相关技术中仅能对单个表的数据落地的方式,效率低的技术问题。上述数据可以是通过一定方式采集或者确定的数据,上述数据可以是多维度的数据。相关技术中,风险控制的反欺诈技术需要对交易数据进行采集,进行有效分析。但是通常交易数据的数量较大,将上述数据落地在统计表中的速度慢,效率低。上述将数据落地到统计表中,也即是将上述交易数据进行统计,并存储在上述统计表中。本实施例提供了一种可以将大量数据同时落地到不同的统计表中的数据处理方法,先对采集的数据进行清洗,也即是从上述数据中根据各个表特定的表结构,清洗出上述数据的相关字段,例如,表名标识字段。根据清洗出的目标数据,进行去重处理,筛选重复的目标数据进行删除,以提高数据处理的效率,避免进行不必要的运算,然后将去重后的多个数据,同时落地到不同的表中,以保证存储文件数量可控、大小均衡。上述将去重后的多个数据,同时落地到不同的多个表中,可以根据采用并行落地的方式,将多个数据同时落地到不同的表中,需要说明的是,可以通过相关技术中的多输出算法模型来实现。例如,multioutputs算法。在数据落地过程中采用动态分区法,将数据同时落地存储到多个表的存储文件中,具体如下:通过partition算法,针对不同的表的大小要求,对落地的文件个数进行确定,以保证表的存储文件数量可控、大小均衡,防止mapreduce框架发生数据倾斜问题;通过reduce算法,将目标数据的值写入到对应的表存储文件中,实现目标数据的落地。可选的,从数据中清洗出目标数据包括:确定多个表分别对应的表名;对数据进行分析,读取与多个表名对应的表名标识字段;根据表名标识字段,确定表名对应的配置文件;根据配置文件,分别从多个数据的字段中计算字段对应的值,其中,目标数据包括表名标识字段和值。上述表名标识字段用于标识该目标数据需要落地的表,上述目标数据包括表名标识字段和值,以及对应的该条数据,上述表名标识字段可以用于对上述目标数据进行去重,上述值用于将上述目标数据落地到表中。可选的,对多个目标数据进行去重处理包括:建立多个目标数据的组合键,其中,组合键包括目标数据对应的表名标识字段,目标数据的日期,以及目标数据的标识id;根据组合键,通过映射归约mapreduce框架进行去重。上述组合键中的表名标识字段为了定位到不同的表结构,以此知道需要清洗的数据;上述组合键中的日期,为了在相邻两天有数据重复时,可以有效取得前一天的时间较早的数据;上述组合键中的标识id可以标识该条数据。可选的,根据组合键,通过mapreduce框架进行去重包括:通过mapreduce框架的map部分,根据组合键对多个目标数据进行排序;根据标识id,将分类好的多个目标数据分发到不同的存储区;通过mapreduce框架的reduce部分,根据组合键对目标数据进行组合,将组合后的目标数据,输入去重函数;根据去重函数对目标数据进行去重。上述mapreduce框架包括多个map部分和多个reduce部分,map部分和reduce部分之间可以自由进行数据交换,每个数据对应一个map部分和reduce部分,map部分的数据可以发送给其他数据的reduce部分,reduce部分也可以接收其他的数据的map部分的数据。在map部分根据组合键对多个目标数据进行排序;根据标识id,将分类好的多个目标数据分发到不同的存储区;然后不同的存储区的数据可以分别发送给不同的reduce部分,在reduce部分,接收上述多个存储区之一的数据,以及其他map部分的数据,根据组合键对目标数据进行组合,将组合后的目标数据,输入去重函数;根据去重函数对目标数据进行去重。可选的,根据标识id,将分类好的多个目标数据分发到不同的存储区之后包括:将分发到不同的存储区的目标数据进行随机混合;通过mapreduce框架的reduce部分,根据组合键对随机混合后的多个目标数据进行再次排序。通过在map部分将分发到不同的存储区的目标数据进行随机混合,以达到充分混合的目的,然后在reduce部分,根据组合键对随机混合后的多个目标数据进行再次排序,可以对数据进行有效的混合,有利于进行去重处理,提高去重处理的准确性。可选的,根据组合键对多个目标数据进行排序,与根据组合键对随机混合后的多个目标数据进行再次排序的方式相同,具体包括:根据组合键中的表名标识字段多个目标数据进行排序;在目标数据的表名标识字段相等的情况下,根据目标数据的标识id进行排序;在目标数据的标识数据id相等的情况下,根据目标数据的日期进行排序。上述在去重时,通过mapreduce框架的map部分,根据组合键对多个目标数据进行排序,和在将分类好的多个目标数据分发到不同的存储区之后,通过mapreduce框架的reduce部分,根据组合键对随机混合后的多个目标数据进行再次排序的方式可以相同,具体可以是根据某一个参数对上述数据进行排序,还可以根据多个参数对数据进行排序,根据权重选择判定参数的顺序,例如,本实施例采用先根据组合键中的表名标识字段多个目标数据进行排序;在目标数据的表名标识字段相等的情况下,根据目标数据的标识id进行排序;在目标数据的标识数据id相等的情况下,根据目标数据的日期进行排序。可以分表,分日期,进行排序,有利于数据的组合和后续的步骤处理。可选的,根据组合键对目标数据进行组合,将组合后的目标数据,输入去重函数包括:通过表名标识字段对目标数据进行组合;在表名标识字段相同的情况下,根据标识id进行组合;在标识id相同的情况下,根据标识id相同的目标数据,确定目标数据的日期最早的组合键;将表名标识字段与标识id均相同的多个目标数据,以及日期最早的组合键,输入去重函数;由去重函数输出日期最早的表名标识字段和标识id对应的目标数据。在map部分中将目标数据分为了多个不同的存储区,需要通过在reduce部分进行组合,以实现对目标数据的整体去重。上述根据表名标识字段和标识id先后进行组合,可以针对目标数据的日期进行驱虫,选择日期最小的目标数据作为最终的输出。可选的,将去重后的多个目标数据,同时落地存储到多个表的存储文件中包括:根据表的大小要求,确定表的存储目标数据的个数;根据个数,表名标识字段,以及标识id,通过多输出工具multioutputs将多个不同的目标数据写入不同的表的存储路径;根据存储路径,将多个目标数据进行同时落地,存储到对应的表的存储文件中。在数据落地过程中,通过动态分区算法,针对不同的表的大小要求,对落地的文件个数进行确定,以保证表的存储文件大小均衡,防止mapreduce框架发生数据倾斜问题。通过reduce算法,将目标数据的值写入到对应的表存储文件中,实现目标数据的落地。具体可以包括通过多输出工具multioutputs将多个不同的目标数据写入不同的表的存储路径;根据存储路径,将多个目标数据进行同时落地,存储到对应的表的存储文件中。需要说明的是,本实施例还提供了一种可选的实施方式,下面对该实施方式进行详细说明。本实施方式涉及一种多维度的大数据清洗,并将多维度的数据批量落地到hive表的实现方法。在风险控制中的反欺诈技术需要分析多维度的数据,通过对有效数据的采集和分析,比如交易欺诈、交易违规等,有利用帮助我们提高反欺诈的准确度、智能度和效率。然而,随着海量数据的产生,如何准确清洗出对用户有用的多维度数据,同时将这些数据快速落地,供用户方便使用是一个挑战。相关技术中,海量数据大多基于hive存储和离线计算,数据落地到hive表通常采用的是传统hivesql的写法和mapreducemr框架。但是,传统的hivesql表达能力有限,执行逻辑依赖于表结构,不够灵活,而hivesql自动生成的mapreduce不够智能化,调优困难、执行效率较低。mapreduce可以大大提高其灵活度和效率,然而目前大部分的mapreduce落地算法局限于对单个表的落地,并没有一套通用的针对海量数据做批量落地的方案。为此,本实施方式提供了一种基于mapreduce的通用大数据批量落地方法,能在保证时间效率以及数据准确性的情况下,从海量数据中,清洗出多个落地表需要的数据,将其一次性批量落地,且保证数据文件的大小均衡。由此,为风控大数据提供完整可靠的数据,有利于风险控制的分析和管理。本实施方式提供的基于mapreduce的通用大数据批量落地方法。其中,用于批量落地的落地装置可以包括海量数据清洗模块,数据去重模块以及数据落地模块,下面对该装置进行详细说明。一、海量数据清洗模块:该海量数据清洗模块是从报文形式的海量数据中,根据各表特定的表结构,清洗出报文里的字段和值,为后续做铺垫。此海量数据清洗模块在mapper中实现,主要分为以下两个步骤:1)对每个表结构做出对应的配置文件,以tablename为名;2)通过对报文的分析,取出tablename字段,由此对应到相应的配置文件。读取该配置文件中的字段,从报文里取出对应的值,输出(key,value)。二、数据去重模块;该数据去重模块主要针对风控引擎报文中的重复数据,由于每条数据都有一个id字段唯一标识,本实施方式则基于数据中的id字段通过mr框架进行去重。以此达到每天的数据不重复,若相隔两天有数据重复,则取前一天的数据。为达到数据去重,结合mr的流程图,本实施方式设计的key为一个组合key,包括以下三个字段:1)对应的表名标识字段tablename(为定位到不同的表结构,以此知道清洗哪些数据);2)日期day(为在相邻两天有重复数据时,取得前一天的数据);3)数据唯一标识id(为标识该条数据)。图2是根据本发明实施方式的数据处理功能框架的示意图,如图2所示,由mr流程图可知,mr流程对key首先在map端进行sort排序,其次根据key分发到不同的partition;再shuffle结束后;每个reduce端会在merge的时候根据key进行再次的sort排序;接着在进入reduce函数之前,进行一次group阶段,通过group得到进入同一个reduce函数的kv。基于mr的流程和设计的组合键,本实施方式通过重写sort阶段、partition阶段和group阶段即可实现对数据的去重,具体算法如下:a)在sort阶段,通过对组合键中的tablename进行排序,若相等,则对id进行排序,若id相等,则通过day进行从小到大排序。b)在partition阶段,基于id字段进行分区,以保证相同的数据一定在一个reducer中做处理。c)在reduce阶段中的group组合,通过tablename进行组合,若tablename相同,则根据id进行组合,若id相同,基于之前sort阶段的结果,自然取得day为小的组合键。由此,相同tablename,相同id的数据将进入同一个reduce函数,且传入的key为day为最小的组合键。其中,上述各个算法具体如下:sort算法,具体如下:group算法,具体如下:基于以上三个阶段的设计和实现,达到了每天的数据不重复,若相隔两天有数据重复,则取前一天的数据的目的。三、数据落地模块:数据落地模块有两个目标。其一,可以一次性落入多表,以达到批量落地的要求,提高数据落地效率;其二,针对不同表的大小要求,数据落地后,对应表的存储文件个数也要不一致,以达到表的存储文件大小均衡。为达到以上目标,防止mr的数据倾斜问题,且保证存储文件个数可控,大小均衡,本实施方式提供了如下动态分区算法://根据数据大小预设每张表的文件个数realreducenum←reducenummap.get(tablename)//为防止mr的数据倾斜,根据表名做哈希散列,得到一个随机数divided←((fnvhash(tablename)&integer.max_value)%(numreducetasks-maxconfignum));//最后对id做哈希散列到给定的文件个数范围return((fnvhash(id))&integer.max_value)%realreducenum+divided为将value写出到对应的表存储文件中,本实施方式提供了如下reduce算法://通过组合key中取得不同的表名tablename←key.get(tablename)//通过组合key中取得不同的日期day←key.get(day)//通过multioutputs最后对不同的value写入不同的表路径multioutputs.write(tablename,null,value,tablepath)本实施方式的目的在于通过批量的多维度数据清洗落地,快速高效地为构建风控大数据分析提供数据基础。本实施方式能准确的从海量数据中,清洗出多个落地表需要的数据,且将多表的数据一次性批量落地;同时,每张落地表的存储文件个数可按照各表的不同大小控制,数据量大的落地表则分配多个存储文件,反之则分配少量文件,因此,各落地表的每个存储文件大小均衡,以提高数据操作性能;能t+1处理每天数亿的海量数据,在保证时间性能的同时,根据数据的唯一标识做去重处理,保证每张表中没有重复和遗漏的数据;为风控大数据灵活提供数据基础,有利于对数据仓库的形成和反欺诈数据采集。经试验,采用相关技术,每天处理平均4,3326,1651条的数据量,1053.30gb的量。采用本实施方式的方案,一次性将上述所有数据落地到361张表,平均时间在40分钟。图3是根据本发明实施例的一种数据处理装置的示意图,如图3所示,根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:清洗模块32,去重模块34和落地模块36,下面对该装置进行详细说明。清洗模块32,用于从数据中清洗出目标数据;去重模块34,与上述清洗模块32相连,用于对多个目标数据进行去重处理;落地模块36,与上述去重模块34相连,用于将去重后的多个目标数据,同时落地存储到多个表的存储文件中。通过上述装置,采用清洗模块32从数据中清洗出目标数据;去重模块34对多个目标数据进行去重处理;落地模块36将去重后的多个目标数据,同时落地存储到多个表的存储文件中的方式,通过对大量数据的清洗和去重,然后同时进行落地,达到了对多个表同时进行数据落地的目的,从而实现了提高数据落地的效率的技术效果,进而解决了相关技术中仅能对单个表的数据落地的方式,效率低的技术问题。根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述中任意一项的方法。根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项的方法。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1