数据处理方法、装置、网络设备及存储介质与流程

文档序号:23003590发布日期:2020-11-20 11:52阅读:127来源:国知局
数据处理方法、装置、网络设备及存储介质与流程

本发明涉及通信技术领域,特别涉及一种数据处理方法、装置、网络设备及存储介质。



背景技术:

hive是一个建立在hadoop架构之上的数据仓库。它能够提供数据的精炼,查询和分析。基于hive的海量数据关联的底层实现是mapreduce提供的,即计算作业在map阶段根据数据的大小划分为多个分布式计算任务,然后进行partition(即相同的key的数据进入同一reduce),最后在reduce阶段进行合并运算。

然而,发明人发现现有技术至少存在以下问题:mapreduce程序在处理关联数据时,通常会由于数据表中的某个关联字段的条数比其它关联字段多出很多,而导致大部分reduce节点执行完毕时,仍然有一个或者几个reduce节点运行很慢,使mapreduce程序处理关联数据的时间较长。



技术实现要素:

本发明实施方式的目的在于提供一种数据处理方法、装置、网络设备及存储介质,使得mapreduce处理数据关联的时间缩短。

为解决上述技术问题,本发明的实施方式提供了一种数据处理方法,包括:若某一数据表中的某一字段值的出现频度大于预设频度,则将所述字段值作为目标字段值,并将所述数据表作为第一数据表;将所述第一数据表的关联数据表作为第二数据表;对第二数据表中包含目标字段值的记录进行膨胀处理;将第一数据表和膨胀处理后的第二数据表中的目标字段值重置为若干个新的字段值;根据重置字段值后的第一数据表和第二数据表进行数据关联处理。

本发明的实施方式还提供了一种数据处理装置,包括:第一确定模块,用于在某一数据表中的某一字段值的出现频度大于预设频度时,将所述字段值作为目标字段值,并将所述数据表作为第一数据表;第二确定模块,用于将所述第一数据表的关联数据表作为第二数据表;膨胀模块,用于对第二数据表中包含目标字段值的记录进行膨胀处理;重置模块,用于将第一数据表和膨胀处理后的第二数据表中的目标字段值重置为若干个新的字段值;处理模块,用于根据重置字段值后的第一数据表和第二数据表进行数据关联处理。

本发明的实施方式还提供了一种网络设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的数据处理方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的数据处理方法。

本发明实施方式相对于现有技术而言,通过将数据表中出现频度大于预设频度的字段值作为目标字段值,可以确定数据关联处理时关联条数较多的字段值;通过对第二数据表中包含目标字段值的记录进行膨胀处理,可以使数据关联时第二数据表中有足够的字段值被重置为新的字段值,从而能与第一数据表中重置的新的字段值相对应;通过对目标字段值重置为若干个新的字段值,可以使数据关联时目标字段值被分配在若干个reduce节点中进行处理,相比原来由更多的reduce节点共同处理关联条数较多的关联字段,从而解决某个reduce节点处理时间较长的问题,缩短mapreduce程序在数据关联时的处理时间。

另外,在对第二数据表中包含目标字段值的记录进行膨胀处理之前,还包括:根据目标字段值在第一数据表中的出现频次确定膨胀系数;对第二数据表中包含目标字段值的记录进行膨胀处理,具体为:根据膨胀系数对第二数据表中包含目标字段值的记录进行膨胀处理。通过目标字段值在第一数据表中的出现频次确定膨胀系数,并根据膨胀系数对第二数据表中包含目标字段值的记录进行膨胀处理,可以使在目标字段值出现频次较多时膨胀较多,在目标字段值出现频次较少时膨胀较少,便于在目标字段出现频次较多时重置的新的字段值较多,以使用更多的reduce节点处理,在目标字段出现频次较少重置的新的字段值较少,以使用较少的reduce节点处理,从而使最终处理的reduce节点的个数与目标字段值的出现频次相符合,提高reduce节点任务分配的合理性。

另外,将第一数据表和膨胀处理后的第二数据表中的目标字段值重置为若干个新的字段值,包括:根据膨胀系数形成散列空间;将第一数据表中的目标字段值与散列空间中的值拼接为新的字段值、将膨胀处理后的第二数据表中的目标字段值与散列空间中的值拼接为新的字段值。通过散列空间中的值与目标字段值拼接为新的字段值,由于散列空间是由膨胀系数形成的,膨胀系数的大小决定了散列空间中的值的多少,而膨胀系数是由目标字段值出现频次决定的,因此,重置的新的字段值的个数在目标字段值出现频次较少时较少,进而使用较少的reduce节点处理,在目标字段值出现频次较多时较多,进而使用较多的reduce节点处理,从而使最终处理的reduce节点的个数与实现情况相符合,提高reduce节点任务分配的合理性。

另外,将第一数据表中的目标字段值与散列空间中的值拼接为新的字段值、将膨胀处理后的第二数据表中的目标字段值与散列空间中的值拼接为新的字段值,包括:将第一数据表中的目标字段值拼接第一散列值而重置为新的字段值,其中,第一散列值为从散列空间中随机获取的值;将膨胀处理后的第二数据表中的目标字段值拼接第二散列值而重置为新的字段值,其中,第二散列值为从散列空间中按前后顺序获取的值。由于第一数据表中目标字段值的个数较多,采用从散列空间中随机获取一个值与第一数据表中的目标字段值进行拼接,可以不需要将第一数据表中的目标字段值划分等份而接近于一个比较均匀的情况;而采用从散列空间中按顺序获取一个值与第二数据表中的目标字段值进行拼接,可以保证第二数据表中有相同的新的字段值与第一数据表中新的字段值相对应。

另外,根据目标字段值在第一数据表中的出现频次确定膨胀系数,具体为:根据确定膨胀系数,其中,n为膨胀系数,n为目标字段值在第一数据表中的出现频次,α为预设值、且n为α的倍数。

另外,根据膨胀系数形成散列空间s{1,2…n}。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。

图1是本发明第一实施方式提供的数据处理方法的流程示意图;

图2是本发明第二实施方式提供的数据处理方法的流程示意图;

图3是本发明第三实施方式提供的数据处理装置的模块结构示意图;

图4是本发明第四实施方式提供的网络设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种数据处理方法,若某一数据表中的某一字段值出现频度大于预设频度,则将上述字段值作为目标字段值,并将上述数据表作为第一数据表;将第一数据表的关联数据表作为第二数据表;对第二数据表中包含目标字段值的记录进行膨胀处理;将第一数据表和膨胀处理后的第二数据表中的目标字段值重置为若干个新的字段值,根据重置字段后的第一数据表和第二数据表进行数据关联处理。由于对包含目标字段值的记录进行膨胀处理并将目标字段值重置为若干个新的字段值,可以使关联条数较多的关联字段相比原来分布在更多的reduce节点中,由更多的reduce节点共同处理关联条数较多的关联字段,从而解决某个reduce节点处理时间较长的问题,缩短mapreduce程序在数据关联时的处理时间。

应当说明的是,本发明实施方式提供的数据处理方法可以应用在mapreduce计算框架中,即执行主体为mapreduce程序,具体可以应用在hive或spark中。

本发明实施方式提供的数据处理方法的具体流程如图1所示,具体包括以下步骤:

s101:若某一数据表中的某一字段值的出现频度大于预设频度,则将上述字段值作为目标字段值,并将上述数据表作为第一数据表。

可选地,可以根据字段值在数据表中的出现频次大于预设频次来确定目标字段值,例如将出现频次大于10万次(预设频次)的字段值作为目标字段值。

由于每个数据表具体包括的记录条数不同,因此使用出现频度找出关联条数较多的字段值,可以使目标字段值的确定适用于不同的数据表。其中,出现频度=某一字段值的记录条数/总记录条数。在实际应用中,可以同时使用出现频次和出现频度两个标准来确定目标字段值,即出现频次大于预设频次且出现频度大于预设频度。

s102:将第一数据表的关联数据表作为第二数据表,其中,第二数据表中包括目标字段值。

s103:对第二数据表中包含目标字段值的记录进行膨胀处理,其中,膨胀处理为将包含目标字段值的记录复制若干份。

其中,在膨胀处理时,复制的份数可以根据目标字段值在第一数据表的出现频度决定,在出现频度较高时复制较多份数,在出现频度较低时复制较少份数。

s104:将第一数据表和膨胀处理后的第二数据表中的目标字段值重置为若干个新的字段值。

将目标字段值重置为新的字段值时,可以将第一数据表和膨胀处理后的第二数据表中的目标字段值拼接相同的前缀或后缀重置为新的字段值。例如,若目标字段值为a,则可以是拼接为001a或a001。当以若干个不同的前缀或后缀对目标字段值进行拼接时,目标字段值就被重置为若干个新的字段值。例如是001a、002a和003a,这样目标字段值就被重置为3个新的字段值。由于在第一数据表中目标字段值的数量较多,为了使目标字段值在关联时被均匀分配到不同的reduce节点,可以设置将第一数据表中的目标字段值分为若干等份,每一等分的目标字段值重新为一新的字段值。

可选地,可以只将部分目标字段值重置为新的字段值。

s105:根据重置字段值后的第一数据表和第二数据表进行数据关联处理。

例如,若重置前第一数据表中目标字段值a在第一数据表有10万条记录,则按照重置前进行数据关联处理,该10万条记录由于字段值相同(均为目标字段值a)而被分配在一个reduce节点中进行处理;若经过膨胀处理和重置字段后,目标字段值a被重置为001a、002a和003a三个新的字段值,则目标字段值在数据关联处理时会被分配在三个不同的reduce节点中进行处理,从而提高了处理的速度和效率。其中,膨胀处理是为了使第二数据表中有足够的记录将目标字段值重置为新的字段值,从而与第一数据表中重置的新的字段值相对应。

由于s101-s104均为数据关联处理前的步骤,因此在实际应用中,可以将s101-s104的步骤分由与mapreduce程序不同的部分进行处理,例如分由单独的服务器进行处理。

与现有技术相比,本发明实施方式提供的数据处理方法,通过将数据表中出现频度大于预设频度的字段值作为目标字段值,可以确定数据关联处理时关联条数较多的字段值;通过对第二数据表中包含目标字段值的记录进行膨胀处理,可以使数据关联时第二数据表中有足够的字段值被重置为新的字段值,从而能与第一数据表中重置的新的字段值相对应;通过对目标字段值重置为若干个新的字段值,可以使数据关联时目标字段值被分配在若干个reduce节点中进行处理,相比原来由更多的reduce节点共同处理关联条数较多的关联字段,从而解决某个reduce节点处理时间较长的问题,缩短mapreduce程序在数据关联时的处理时间。

本发明的第二实施方式涉及一种数据处理方法。第二实施方式与第一实施方式大致相同,主要区别之处在于:1、在对第二数据表中包含目标字段值的记录进行膨胀处理之前,还包括:根据目标字段值在第一数据表中的出现频次确定膨胀系数;2、对第二数据表中包含目标字段值的记录进行膨胀处理,具体为:根据膨胀系数对第二数据表中包含目标字段值的记录进行膨胀处理;3、将第一数据表和膨胀处理后的第二数据表中的目标字段值重置为若干个新的字段值,包括:根据膨胀系数形成散列空间,将第一数据表中的目标字段与散列空间中的值拼接为新的字段值、将膨胀处理后的第二数据表中的目标字段值与散列空间中的值拼接为新的字段值。通过目标字段值在第一数据表中的出现频次确定膨胀系数,并根据膨胀系数对第二数据表中包含目标字段值的记录进行膨胀处理,再通过散列空间中的值与目标字段值拼接为新的字段值,可以使最终处理的reduce节点的个数与目标字段值的出现频次相符合,提高reduce节点任务分配的合理性。

本发明实施方式提供的数据处理方法的具体流程如图2所示,具体包括以下步骤:

s201:若某一数据表中的某一字段值的出现频度大于预设频度,则将上述字段值作为目标字段值,并将上述数据表作为第一数据表。

s202:将第一数据表的关联数据表作为第二数据表,其中,第二数据表中包括目标字段值。

其中,s201-s202与第一实施方式中的s101-s102相同,具体请参见第一实施方式中的相关描述,此处不再赘述。

s203:根据目标字段值在第一数据表中的出现频次确定膨胀系数。

在一个具体的例子中,可以根据以下公式(1)确定膨胀系数:

其中,n为膨胀系数,n为目标字段值在第一数据表中的出现频次,α为预设值、且n为α的倍数。α例如是20000、30000或50000等,具体不做限制。

例如,若n为100000,α为20000,则膨胀系数n=100000/20000=5。

s204:根据膨胀系数对第二数据表中包含目标字段值的记录进行膨胀处理。

例如,若n=5,则将第二数据表中包含目标字段值的记录复制5份。

s205:根据膨胀系数形成散列空间。

在一个具体的例子中,根据膨胀系数形成散列空间s{1,2…n}。

例如,若n=5,则散列空间为s{1,2…5}。

s206:将第一数据表中的目标字段值与散列空间中的值拼接为新的字段值、将膨胀处理后的第二数据表中的目标字段值与散列空间中的值拼接为新的字段值。

在一个具体的例子中,s206具体可以为:将第一数据表中的目标字段值拼接第一散列值而重置为新的字段值,其中,第一散列值为从散列空间中随机获取的值;将膨胀处理后的第二数据表中的目标字段值拼接第二散列值而重置为新的字段值,其中,第二散列值为从散列空间中按前后顺序获取的值。

由于第一数据表中目标字段值的个数较多,采用从散列空间中随机获取一个值与第一数据表中的目标字段值进行拼接,可以不需要将第一数据表中的目标字段值划分等份而接近于一个比较均匀的情况;而采用从散列空间中按顺序获取一个值与第二数据表中的目标字段值进行拼接,可以保证第二数据表中有相同的新的字段值与第一数据表中新的字段值相对应。

s207:根据新的字段值对第一数据表和第二数据表进行数据关联处理。

与现有技术相比,本发明实施方式提供的数据处理方法,通过目标字段值在第一数据表中的出现频次确定膨胀系数,并根据膨胀系数对第二数据表中包含目标字段值的记录进行膨胀处理,可以使在目标字段值出现频次较多时膨胀较多,在目标字段值出现频次较少时膨胀较少,便于在目标字段出现频次较多时重置的新的字段值较多,以使用更多的reduce节点处理,在目标字段出现频次较少重置的新的字段值较少,以使用较少的reduce节点处理;通过散列空间中的值与目标字段值拼接为新的字段值,由于散列空间是由膨胀系数形成的,膨胀系数的大小决定了散列空间中的值的多少,而膨胀系数是由目标字段值出现频次决定的,因此,重置的新的字段值的个数在目标字段值出现频次较少时较少,进而使用较少的reduce节点处理,在目标字段值出现频次较多时较多,进而使用较多的reduce节点处理,从而使最终处理的reduce节点的个数与实现情况相符合,提高reduce节点任务分配的合理性。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明第三实施方式涉及一种数据处理装置300,如图3所示,包含:第一确定模块301、第二确定模块302、膨胀模块303、重置模块304和处理模块305。各模块功能详细说明如下:

第一确定模块301,用于在某一数据表中的某一字段值的出现频度大于预设频度时,将上述字段值作为目标字段值,并将上述数据表作为第一数据表;

第二确定模块302,用于将第一数据表的关联数据表作为第二数据表,其中,第二数据表中包括目标字段值;

膨胀模块303,用于对第二数据表中包含目标字段值的记录进行膨胀处理,其中,膨胀处理为将包含目标字段值的记录复制若干份;

重置模块304,用于将第一数据表和膨胀处理后的第二数据表中的目标字段值重置为若干个新的字段值;

处理模块305,用于根据重置字段值后的第一数据表和第二数据表进行数据关联处理。

进一步地,本发明实施方式提供的数据处理装置300还包括计算模块,其中,计算模块用于:根据目标字段值在第一数据表中的出现频次确定膨胀系数;膨胀模块303还用于:根据膨胀系数对第二数据表中包含目标字段值的记录进行膨胀处理。

进一步地,重置模块304还用于:

根据膨胀系数形成散列空间;

将第一数据表中的目标字段值与散列空间中的值拼接为新的字段值、将膨胀处理后的第二数据表中的目标字段值与散列空间中的值拼接为新的字段值。

进一步地,重置模块304还用于:

将第一数据表中的目标字段值拼接第一散列值而重置为新的字段值,其中,第一散列值为从散列空间中随机获取的值;

将膨胀处理后的第二数据表中的目标字段值拼接第二散列值而重置为新的字段值,其中,第二散列值为从散列空间中按前后顺序获取的值。

进一步地,计算模块还用于:

根据确定膨胀系数,其中,n为膨胀系数,n为目标字段值在第一数据表中的出现频次,α为预设值、且n为α的倍数。

进一步地,重置模块304还用于:根据膨胀系数形成散列空间s{1,2…n}。

不难发现,本实施方式为与第一实施方式和第二实施方式相对应的装置实施例,本实施方式可与第一实施方式和第二实施方式互相配合实施。第一实施方式和第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式和第二实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明第四实施方式涉及一种网络设备,如图4所示,包括至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述的数据处理方法。

其中,存储器402和处理器401采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器401和存储器402的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器401处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器401。

处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器402可以被用于存储处理器401在执行操作时所使用的数据。

本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1