一种确定TopN数据的方法、系统及设备技术方案

技术编号:21605735 阅读:20 留言:0更新日期:2019-07-13 18:17
本申请公开了一种确定TopN数据的方法、系统及设备。本说明书一实施例的方法流程包括:根据数据项的名称标识对原数据执行分组操作,获取原数据分组,每个所述名称标识对应一个所述原数据分组;针对每个所述原数据分组,根据数据项的排序字段执行去重操作,获得去重数据分组,其中,同一所述原数据分组内,排序字段的值相同的多个数据项只保留其中的一个数据项;分别针对每个所述去重数据分组,基于所述排序字段的值对所述数据项执行组内排序操作;根据所述组内排序操作的操作结果,分别确定每个所述原数据分组中所述排序字段的值排在前N位的数据项。

A Method, System and Equipment for Determining TopN Data

【技术实现步骤摘要】
一种确定TopN数据的方法、系统及设备
本说明书涉及计算机
,尤其涉及一种确定TopN数据的方法、系统及设备。
技术介绍
在大数据开发过程中,经常需要按照某个维度确定该维度下排序(这里的排序可以是从大到小排列也可以是从小到大排列)靠前的N个数据(N为自然数,以下称为TopN数据)。为了确定TopN数据,通常做法是先对数据执行分组,再以并行处理的方式分别在各个数据分组内执行组内排序,最终根据所有数据分组的排序结果确定TopN数据。这种对多个分组并行执行组内排序的方式,大大提高了数据处理速度。上述对多个数据分组并行进行组内排序的处理操作通常是通过MapReduce实现的。MapReduce是面向大数据并行处理的计算框架,其处理过程有一个特点,同一个数据分组的(具有相同分组标识(key值))的数据只会分发给同一个reduce执行处理。并行处理的多个reduce中,运行时间最长的单个reduce任务实例,决定了整个并行处理的进度。如果多个数据分组的数据量分布不均匀,出现严重的数据倾斜,就会意味着多个并行处理的reduce所处理的数据量存在严重差异。某个或某几个reduce需要消耗的数据处理时间远大于其他reduce。对于数据处理的整体进程来说,reduce阶段就可能会卡在接近完成(大部分reduce已完成数据处理,但少数reduce没有完成数据处理)的环节而一直无法结束,从而导致确定TopN数据的执行时间被大大拖长。针对上述这种由于数据分组的数据量分布不均匀所产生的数据倾斜,进而导致确定TopN数据执行时间拖长的问题,现有技术采取的方案是,在初次分组后对数据量相对较大的初级分组执行二次分组,将其再分为多个数据量相对较小的次级分组,从而分配给多个reduce并行处理。但是,执行二次分组的前提条件是需要了解初次分组的数据量分布情况,确定需要执行二次分组的初级分组有哪些,同时还要确定需要确定分出的次级分组的个数。上述执行二次分组所需的前置操作不但具备相当的实现难度,而且在执行时还会消耗较多的数据处理资源并占用较长的数据处理时间。这就导致二次分组不但没有通过平衡数据分布来提高并行处理速度,反而增加了确定TopN数据的操作难度以及操作耗时。因此,需要一种处理速度更快、执行更为简单快捷的确定TopN数据的方法。
技术实现思路
有鉴于此,本说明书实施例提供了一种确定TopN数据的方法、系统、设备及计算机可读介质,用于解决现有技术中确定TopN数据操作执行过程复杂、执行耗时长的问题。本说明书实施例采用下述技术方案:本说明书实施例提供一种确定TopN数据的方法,包括:根据数据项的名称标识对原数据执行分组操作,获得一个或多个原数据分组,每个所述名称标识对应一个所述原数据分组;针对每个所述原数据分组,根据数据项的排序字段执行去重操作,获得去重数据分组,其中,同一所述原数据分组内,排序字段的值相同的多个数据项只保留其中的一个数据项;分别针对每个所述去重数据分组,基于所述排序字段的值对所述数据项执行组内排序操作;根据所述组内排序操作的操作结果,分别确定每个所述原数据分组中所述排序字段的值排在前N位的数据项,其中,N的值为TopN中N对应的值,N为自然数。优选地,在一实施例中:所述组内排序操作还包括,根据所述组内排序操作的结果确定所述去重数据分组内数据项对应的组内序号;分别确定每个所述原数据分组中所述排序字段的值排在前N位的数据项,包括:保留每个所述去重数据分组内的阈值数据项,其中,所述阈值数据项为所述组内序号等于N的数据项;确定数据项,对比所述原数据分组内的数据项与对应的所述阈值数据项,根据对比结果确定所述原数据分组中所述排序字段的值排在前N位的数据项。优选地,在一实施例中,根据对比结果确定所述原数据分组中所述排序字段的值排在前N位的数据项,其中:当TopN的取值顺序为从小到大时,从所述原数据分组中确定排序字段的值小于等于所述阈值数据项的数据项;当TopN的取值顺序为从大到小时,从所述原数据分组中确定排序字段的值大于等于所述阈值数据项的数据项。优选地,在一实施例中:所述分组操作包括,确定所述数据项对应的分组字段;所述方法还包括,生成临时数据项表,所述临时数据项表包括所述分组字段以及所述排序字段;所述分组排序操作包括,针对所述临时数据项表执行基于所述分组字段以及所述排序字段的分组排序,确定所述组内序号;保留每个所述去重数据分组内的阈值数据项,其中,保留所述临时数据项表中组内序号等于N的所述数据项;确定数据项,其中,建立所述临时数据项表与所述原数据分组的关联,基于所述关联对比所述原数据分组内的数据项与对应的所述阈值数据项,确定所述原数据分组中所述排序字段的值排在前N位的数据项。优选地,在一实施例中:在所述生成临时数据项表步骤中根据所述分组操作以及所述去重操作的结果生成所述临时数据项表;或者,在所述生成临时数据项表步骤中根据所述分组操作的结果生成临时数据项表,在所述去重操作中针对所述临时数据项表执行所述去重操作;或者,在所述生成临时数据项表步骤中根据所述原数据生成临时数据项表,在所述分组操作以及所述去重操作中针对所述临时数据项表执行所述分组操作以及所述去重操作。优选地,在一实施例中,建立所述临时数据项表与所述原数据的关联,包括:将所述原数据分组与所述临时数据项表执行mapjoin关联,关联字段为所述分组字段。优选地,在一实施例中,保留每个所述去重数据分组内的阈值数据项,其中,当最大的所述组内序号小于N时,所述阈值数据项为组内序号最大的数据项。本说明书实施例还提出了一种确定TopN数据的系统,包括:分组模块,根据数据项的名称标识对原数据执行分组操作,获得一个或多个原数据分组,其中,每个所述名称标识对应一个所述原数据分组;去重模块,其配置为针对每个所述原数据分组,根据数据项的排序字段执行去重操作,获得去重数据分组,其中,同一所述原数据分组内,排序字段的值相同的多个数据项只保留其中的一个数据项;排序模块,其配置为分别针对每个所述去重数据分组,基于所述排序字段的值对所述数据项执行组内排序操作;数据项提取模块,其配置为根据所述组内排序操作的操作结果,分别确定每个所述原数据分组中所述排序字段的值排在前N位的数据项,其中,N的值为TopN中N对应的值,N为自然数。优选地,在一实施例中:所述排序模块还配置为确定所述去重数据分组内数据项对应的组内序号;所述数据项确定模块包括:筛选单元,其配置为保留每个所述去重数据分组内的阈值数据项,其中,所述阈值数据项为所述组内序号等于N的数据项;确定单元,其配置为确定数据项,其中,对比所述原数据分组内的数据项与对应的所述阈值数据项,确定所述原数据分组中所述排序字段的值排在前N位的数据项。优选地,在一实施例中,所述确定单元配置为:当TopN的取值顺序为从小到大时,从所述原数据分组中确定排序字段的值小于等于所述阈值数据项的数据项;当TopN的取值顺序为从大到小时,从所述原数据分组中确定排序字段的值大于等于所述阈值数据项的数据项。优选地,在一实施例中:所述分组模块还配置为确定所述数据项对应的分组字段;所述系统还包含临时表创建模块,所述临时表创建模块配置为生成包含所述分组字段以及所述排序字段的临时数据项表;所述排序本文档来自技高网
...

【技术保护点】
1.一种确定TopN数据的方法,包括:根据数据项的名称标识对原数据执行分组操作,获得一个或多个原数据分组,每个所述名称标识对应一个所述原数据分组;针对每个所述原数据分组,根据数据项的排序字段执行去重操作,获得去重数据分组,其中,同一所述原数据分组内,排序字段的值相同的多个数据项只保留其中的一个数据项;分别针对每个所述去重数据分组,基于所述排序字段的值对所述数据项执行组内排序操作;根据所述组内排序操作的操作结果,分别确定每个所述原数据分组中所述排序字段的值排在前N位的数据项,其中,N的值为TopN中N对应的值,N为自然数。

【技术特征摘要】
1.一种确定TopN数据的方法,包括:根据数据项的名称标识对原数据执行分组操作,获得一个或多个原数据分组,每个所述名称标识对应一个所述原数据分组;针对每个所述原数据分组,根据数据项的排序字段执行去重操作,获得去重数据分组,其中,同一所述原数据分组内,排序字段的值相同的多个数据项只保留其中的一个数据项;分别针对每个所述去重数据分组,基于所述排序字段的值对所述数据项执行组内排序操作;根据所述组内排序操作的操作结果,分别确定每个所述原数据分组中所述排序字段的值排在前N位的数据项,其中,N的值为TopN中N对应的值,N为自然数。2.根据权利要求1所述的方法,在所述方法的流程中:所述组内排序操作还包括,根据所述组内排序操作的结果确定所述去重数据分组内数据项对应的组内序号;分别确定每个所述原数据分组中所述排序字段的值排在前N位的数据项,包括:保留每个所述去重数据分组内的阈值数据项,其中,所述阈值数据项为所述组内序号等于N的数据项;确定数据项,对比所述原数据分组内的数据项与对应的所述阈值数据项,根据对比结果确定所述原数据分组中所述排序字段的值排在前N位的数据项。3.根据权利要求2所述的方法,根据对比结果确定所述原数据分组中所述排序字段的值排在前N位的数据项,其中:当TopN的取值顺序为从小到大时,从所述原数据分组中确定排序字段的值小于等于所述阈值数据项的数据项;当TopN的取值顺序为从大到小时,从所述原数据分组中确定排序字段的值大于等于所述阈值数据项的数据项。4.根据权利要求2或3中任一项所述的方法,在所述方法的流程中:所述分组操作包括,确定所述数据项对应的分组字段;所述方法还包括,生成临时数据项表,所述临时数据项表包括所述分组字段以及所述排序字段;所述分组排序操作包括,针对所述临时数据项表执行基于所述分组字段以及所述排序字段的分组排序,确定所述组内序号;保留每个所述去重数据分组内的阈值数据项,其中,保留所述临时数据项表中组内序号等于N的所述数据项;确定数据项,其中,建立所述临时数据项表与所述原数据分组的关联,基于所述关联对比所述原数据分组内的数据项与对应的所述阈值数据项,确定所述原数据分组中所述排序字段的值排在前N位的数据项。5.根据权利要求4所述的方法,在所述方法的流程中:在所述生成临时数据项表步骤中,根据所述分组操作以及所述去重操作的结果生成所述临时数据项表;或者,在所述生成临时数据项表步骤中根据所述分组操作的结果生成临时数据项表,在所述去重操作中针对所述临时数据项表执行所述去重操作;或者,在所述生成临时数据项表步骤中根据所述原数据生成临时数据项表,在所述分组操作以及所述去重操作中针对所述临时数据项表执行所述分组操作以及所述去重操作。6.根据权利要求4所述的方法,建立所述临时数据项表与所述原数据的关联,包括:将所述原数据分组与所述临时数据项表执行mapjoin关联,关联字段为所述分组字段。7.根据权利要求2至6中任一项所述的方法,保留每个所述去重数据分组内的阈值数据项,其中,当最大的所述组内序号小于N时,所述阈值数据项为组内序号最大的数据项。8.一种确定TopN...

【专利技术属性】
技术研发人员:王珂莉
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1