一种数据去重的方法和系统
技术领域
本发明涉及大数据领域,具体涉及一种数据去重的方法和系统。
背景技术
目前,大数据在很多领域都被广泛的应用,大数据的应用不仅在于掌握庞大的数据信息,而且包括对这些含有意义的数据进行专业化处理。在对大量的数据进行收集的过程中,许多的数据都需要进一步的筛选,从而得到客户最需要的那部分数据,例如,在对大数据的处理过程中,将收集到的数据去重,既筛选去掉重复的数据,这种筛选是许多应用大数据的客户都要进行的操作。
然而,对于在数据量如此大的现实环境中,数据去重带来的计算资源损耗非常的巨大,如何高效精确的将重复的数据去掉,目前而言存在一定的难度。现有技术在处理数据去重的过程中通常有两种操作,一种是行业内在数据的组件层做了相关的算法,如利用在Druid数据库中采用非精确去重的HyperLogLog算法,或者通过Spark技术进行去重等,但是去重结果不精确,而且消耗的计算资源巨大;另一种是利用数据词典进行数据去重,例如在PostGreSql、ClickHouse以及Druid数据管理系统中都是在各自的组件层创建字典表,上述三个数据库虽然各自均实现了精确去重,但较为分散,并不通用,也没有形成统一的札口,有时需要对同一份字典表要计算多次,数据去重的效率同样不高;而且上述两种数据去重的操作,还存在着占用大量计算资源和存储资源的问题。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种数据去重的方法和系统,能够高效精确的将大数据中的重复数据筛选去掉,提高大数据的应用精准度,降低大数据使用成本。
为解决上述技术问题,本发明采用的技术方案是:
第一方面,本发明实施例公开了一种数据去重的方法,所述方法包括以下步骤:
在数据库中设计去重字典表数组,在所述去重字典表数组中增加一列数据加速层,将所述去重字典表数组和所述数据加速层进行维度关联匹配;
将待去重数据映射到所述去重字典表数组中,再将所述去重字典表数组导入到所述数据加速层的数据管理系统,通过所述数据管理系统将所述去重字典表数组中的所述待去重数据转化为bit格式并存储于Bitmap集合中,使得所述待去重数据转化为所述数据加速层中新的一列;
在所述Bitmap集合中,利用去重函数,统一对所述待去重数据进行精确去重,筛选掉重复的数据。
进一步地,所述维度关联匹配包括统计不同维度下的所述去重字典表数组,所述去重字典表数组至少包括会员字典表数组、订单字典表数组;所述维度至少包括字典ID、会员编码、订单创建日期、订单编码、订单产品品牌。
进一步地,所述待去重数据包括离线数据和实时数据,所述去重字典表数组分为离线去重字典表数组和实时去重字典表数组,所述离线数据直接映射到所述离线去重字典表数组中,所述实时数据通过key-value分布式存储系统先确认新增的所述字典ID,再将所述字典ID及其对应的所述实时数据映射到所述实时去重字典表数组中。
进一步地,所述数据管理系统至少包括PG数据管理系统、CK数据管理系统和Druid数据管理系统。
进一步地,所述去重函数至少包括Bitmap和运算、Bitmap非运算、Bitmap或运算。
另一方面,本发明实施例公开了一种数据去重的系统,所述系统包括:
字典表数组模块,所述字典表数组模块用于在数据库中设计去重字典表数组,在所述去重字典表数组中增加一列数据加速层,将所述去重字典表数组和所述数据加速层进行维度关联匹配;
数据处理模块,用于将待去重数据映射到所述去重字典表数组中,再将所述去重字典表数组导入到所述数据加速层的数据管理系统,通过所述数据管理系统将所述去重字典表数组中的所述待去重数据转化为bit格式并存储于Bitmap集合中,使得所述待去重数据转化为所述数据加速层中新的一列;
数据去重模块,用于在所述Bitmap集合中,利用去重函数,统一对所述待去重数据进行精确去重,筛选掉重复的数据。
进一步地,所述维度关联匹配包括统计不同维度下的所述去重字典表数组,所述去重字典表数组至少包括会员字典表数组、订单字典表数组;所述维度至少包括字典ID、会员编码、订单创建日期、订单编码、订单产品品牌。
进一步地,所述待去重数据包括离线数据和实时数据,所述去重字典表数组分为离线去重字典表数组和实时去重字典表数组,所述离线数据直接映射到所述离线去重字典表数组中,所述实时数据通过key-value分布式存储系统先确认新增的所述字典ID,再将所述字典ID及其对应的所述实时数据映射到所述实时去重字典表数组中。
进一步地,所述数据管理系统至少包括PG数据管理系统、CK数据管理系统和Druid数据管理系统。
进一步地,所述去重函数至少包括Bitmap和运算、Bitmap非运算、Bitmap或运算。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例公开了一种数据去重的方法和系统,通过在数据库的第一运算阶层中设计去重字典表数组,并在在所述去重字典表数组中增加一列数据加速层,将待去重数据映射到所述去重字典表数组中,再将所述去重字典表数组导入到所述数据加速层的数据管理系统,使得所述待去重数据转化为bit格式并存储于Bitmap集合中,最后在Bitmap集合达到对所述去重数据的精确去重,由于待去重数据去重前已经转化为bit位数据进行的存储,显著提高了去重的速度,由于所有带去重数据是都是在Bitmap集合中去重的,因此,去重的算法统一,消耗的计算资源较小,由于待去重数据转化为bit格式是在数据管理系统统一实现的,因此,本发明实施例的数据去重方法通用性较强,实现了高效率数据去重。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的数据去重的方法的一种总流程示意图;
图2是本发明实施例公开数据去重的方法中关于会员和订单数据去重的部分流程示意图;
图3是本发明实施例公开的数据去重系统的一种结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
如图1所示,本发明实施例公开了一种数据去重的方法,所述方法包括以下步骤:
S1:在数据库中设计去重字典表数组,在所述去重字典表数组中增加一列数据加速层,将所述去重字典表数组和所述数据加速层进行维度关联匹配;
S2:将待去重数据映射到所述去重字典表数组中,再将所述去重字典表数组导入到所述数据加速层的数据管理系统,通过所述数据管理系统将所述去重字典表数组中的所述待去重数据转化为bit格式并存储于Bitmap集合中,使得所述待去重数据转化为所述数据加速层中新的一列;
S3:在所述Bitmap集合中,利用去重函数,统一对所述待去重数据进行精确去重,筛选掉重复的数据。
具体地,本发明实施例基于HIVE数据库进行数据去重,首先在HIVE的上游,也既在HIVE数据库的第一运算阶层设计去重字典表数组,该字典表是以数组的形式映射于所述待去重数据,优选地,所述维度关联匹配包括统计不同维度下的所述去重字典表数组,所述去重字典表数组至少包括会员字典表数组、订单字典表数组;所述维度至少包括字典ID、会员编码、订单创建日期、订单编码、订单产品品牌。例如,在对购物平台的购物会员进行购物分析时,需要首先对该平台的购物会员数据进行去重,需要首先在HIVE数据库的第一运算阶层设计对应于会员的字典表,并增加一列对应于会员数据的数据加速层,该会员的字典表包括的维度至少有字典ID,会员编码,会员订单的创建信息等,在将对应于该维度下的具体待去重数据同步到该会员的字典表中,通过将会员字典表导入到数据加速层的数据管理系统后,使得该会员字典表的信息最后以bit格式存储在Bitmap集合中,通过去重函数对该平台的会员进行精确去重。由于对于购物平台的会员去重是将会员字典表的形式先导入到数据加速层中,可以利用不同的数据管理系统统一的创建以bit格式存储的会员字典,因此,显著提高了会员数据去重的速度,由于所有带去重数据是都是在Bitmap集合中去重的,因此,去重的算法统一,消耗的计算资源较小,使得后续的会员数据去重精确度更高,同时保证了高效率会员数据去重。
优选地,所述待去重数据包括离线数据和实时数据,所述去重字典表数组分为离线去重字典表数组和实时去重字典表数组,所述离线数据直接映射到所述离线去重字典表数组中,所述实时数据通过key-value分布式存储系统先确认新增的所述字典ID,再将所述字典ID及其对应的所述实时数据映射到所述实时去重字典表数组中。对于购物平台上的会员和订单数据去重而言,在离线状态下,首先将待去重的会员数据或者订单数据同步映射到对应的离线去重字典表数组中,从而在进行下一步的操作;对于实时数据而言,首先需要对待去重实时的会员数据和订单数据其进行预处理,预处理过程需要通过key-value分布式存储系统对字典ID进行识别,首先,通过redis系统获取存在于HIVE数据库中已经存在的字典ID,并记录在redis系统中,实时的会员数据或者订单数据流通过flink系统先进入redis系统,查询redis系统是否存在已经记录过的字典ID,确定实时的字典ID是否存在,如果存在,则对于的产生的实时会员数据或者订单数据直接映射到存在的字典ID中去,若不存在,则通过redis系统新增一个字典ID同步对应的会员数据或者订单数据。其中,在这个预处理过程中,需要用到另一个Hbase数据库记录字典ID对应离线时的会员数据或订单数据,实时的flink系统先通过Hbase数据库查询实时产生的会员数据或者订单数据是否在Hbase数据库中,如果是新增的,通过redis系统将新增的会员数据经过Hbase数据库最终导入到HIVE数据库,实现对实时产生的数据进行统计。
优选地,所述数据管理系统至少包括PG数据管理系统、CK数据管理系统和Druid数据管理系统。如图2所示的数据去重的方法中关于会员和订单数据去重的部分流程示意图,在去重字典表数组中新增的一个数据加速层用来转化导入的去重字典表数组的,其中,将同步映射的实时订单字典表数组和离线字典表数组分别位于两个不同的字典表中,将统计不同维度下的字典表数组后,根据数组的维度分别采用PG数据管理系统、CK数据管理系统和Druid数据管理系统三个不同的数据管理系统进行转化,其中,PG是PostGreSQL的缩写,PG数据管理系统表示关系型数据库管理系统,CK是ClickHouse的缩写,CK数据管理系统其表示列式数据管理系统,Druid数据管理系统表示开源分布式数据管理系统,通过以上三个数据管理系统能够较好的应对导入到数据加速层的各种待去重数据,使得各种维度的数组快速精确的转化为bit格式存储在Bitmap集合中,由于采用了统一的字典表,通过不同种类的数据管理系统将其转化为bit格式的数据统一存储在Bitmap集合中,因此,后续的去重可以更加快捷和精确,避免分不同种类散的去重字典表直接去重的不便,通过统一的数据札口,可以较为通用的处理各种不同维度的数据。
优选地,所述去重函数至少包括Bitmap和运算、Bitmap非运算、Bitmap或运算。其中,在各种待去重数据转化为bit格式后,在Bitmap集合中,调用数据库中的Bitmap算法进行去重筛选,其中,Bitmap算法中的去重函数包括有Bitmap和运算、Bitmap非运算、Bitmap或运算等不同种类的运算,对bit格式的数据可以快速的去重操作,实现对不同场景的数据去重。
实施例二:
如图3所示,本发明实施例还公开了一种数据去重的系统,所述系统包括:
字典表数组模块1,所述字典表数组模块1用于在数据库中设计去重字典表数组,在所述去重字典表数组中增加一列数据加速层,将所述去重字典表数组和所述数据加速层进行维度关联匹配;
数据处理模块2,用于将待去重数据映射到所述去重字典表数组中,再将所述去重字典表数组导入到所述数据加速层的数据管理系统,通过所述数据管理系统将所述去重字典表数组中的所述待去重数据转化为bit格式并存储于Bitmap集合中,使得所述待去重数据转化为所述数据加速层中新的一列;
数据去重模块3,用于在所述Bitmap集合中,利用去重函数,统一对所述待去重数据进行精确去重,筛选掉重复的数据。
例如,利用该数据去重的系统可以实现对网购平台中会员数据和订单数据的精确统一去重,具体地,在对会员数据去重系统下,首先,需要字典表数组模块1进行设计会员数据的去重字典表数组,进一步的,该会员数据对应的去重字典表数组位于数据库的第一运算阶层,并在去重字典表数组中增加一列关于会员数据的数据加速层;再利用数据处理模块2对会员数据进行同步映射到所述去重字典表数组中,同步完成后,再通过数据处理模块2将去重字典表数组导入到数据加速层中,通过数据加速层的数据管理系统对会数据进行格式转化,使得所有的待去重会员数据全部以bit格式存储于Bitmap集合,最后,利用数据去重模块3对该集合的会员数据统一去重,精确的筛选掉重复的会员数据。
优选地,所述维度关联匹配包括统计不同维度下的所述去重字典表数组,所述去重字典表数组至少包括会员字典表数组、订单字典表数组;所述维度至少包括字典ID、会员编码、订单创建日期、订单编码、订单产品品牌。具体地,在去重字典表模块下,设计的去重字典表数组包括多种网购平台的数据,例如会员字典表数组、订单字典表数组等,每个数组对应有不同维度的数据,例如字典ID,会员编码、各种订单信息等,这些不同的维度需要和数据加速层进行维度关联匹配。
优选地,所述待去重数据包括离线数据和实时数据,所述去重字典表数组分为离线去重字典表数组和实时去重字典表数组,所述离线数据直接映射到所述离线去重字典表数组中,所述实时数据通过key-value分布式存储系统先确认新增的所述字典ID,再将所述字典ID及其对应的所述实时数据映射到所述实时去重字典表数组中。具体的,在数据处理模块2下,需要对离线数据和实时数据进行分开处理,对于购物平台上的会员和订单数据去重而言,在离线状态下,首先将待去重的会员数据或者订单数据同步映射到对应的离线去重字典表数组中,从而在进行下一步的操作;对于实时数据而言,首先需要对待去重实时的会员数据和订单数据其进行预处理,预处理过程需要通过key-value分布式存储系统对字典ID进行识别,首先,通过redis系统获取存在于HIVE数据库中已经存在的字典ID,并记录在redis系统中,实时的会员数据或者订单数据流通过flink系统先进入redis系统,查询redis系统是否存在已经记录过的字典ID,确定实时的字典ID是否存在,如果存在,则对于的产生的实时会员数据或者订单数据直接映射到存在的字典ID中去,若不存在,则通过redis系统新增一个字典ID同步对应的会员数据或者订单数据。其中,在这一个预处理过程中,需要用到另一个Hbase数据库记录字典ID对应离线时的会员数据或订单数据,实时的flink系统先通过Hbase数据库查询实时产生的会员数据或者订单数据是否在Hbase数据库中,如果是新增的,通过redis系统将新增的会员数据经过Hbase数据库最终导入到HIVE数据库,实现对实时产生的数据进行统计。
优选地,所述数据管理系统至少包括PG数据管理系统、CK数据管理系统和Druid数据管理系统。具体的,在数据处理模块2下,将统计不同维度下的字典表数组后,根据数组的维度分别采用PG数据管理系统、CK数据管理系统和Druid数据管理系统三个不同的数据管理系统进行转化,其中,PG是PostGreSQL的缩写,PG数据管理系统表示关系型数据库管理系统,CK是ClickHouse的缩写,CK数据管理系统其表示列式数据管理系统,Druid数据管理系统表示开源分布式数据管理系统,通过以上三个数据管理系统能够较好的应对导入到数据加速层的各种待去重数据,使得各种维度的数组快速精确的转化为bit格式存储在Bitmap集合中,由于采用了统一的字典表,通过不同种类的数据管理系统将其转化为bit格式的数据统一存储在Bitmap集合中,因此,后续的去重可以更加快捷和精确,避免分不同种类散的去重字典表直接去重的不便,通过统一的数据札口,可以较为通用的处理各种不同维度的数据。
优选地,所述去重函数至少包括Bitmap和运算、Bitmap非运算、Bitmap或运算。具体地,数据去重模块3下,将各种待去重数据转化为bit格式后,在Bitmap集合中,调用数据库中的Bitmap算法进行去重筛选,其中,Bitmap算法中的去重函数包括有Bitmap和运算、Bitmap非运算、Bitmap或运算等不同种类的运算,对bit格式的数据可以快速的去重操作,实现对不同场景的数据去重。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据去重的系统在对数据去重的过程时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据去重的系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据去重的系统与数据去重的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。