【技术实现步骤摘要】
一种用于计算数据排名的方法和系统
本专利技术涉及大数据领域,尤其涉及一种用于计算数据排名的方法和系统。
技术介绍
在大数据领域中,存在对海量的数据进行排名的需求。例如,中国银联股份有限公司掌握数十亿张银行卡的数据,其需要按照交易笔数或交易金额大小的顺序对每张银行卡进行排序,以获得每张银行卡在所有银行卡中的具体排名。针对这种需求,在大数据领域中存在两种现有的方案。一种是直接使用MR引擎对所有数据进行排序,另一种是使用MR引擎和TotalOrderPartitioner模块对所有数据进行排序。然而,由于海量的数据中往往存在严重的数据倾斜的问题,从而可能使得现有的方案不适用。例如,对于第一种方案,在排序时使得所有数据都进入一个reduce模块,这将使得该reduce模块中的数据量过大,从而极易导致排序任务失败。对于第二种方案,其通过抽样得到待排序的数据的分割点并根据分割点将数据分发到对应的reduce模块。然而,由于数据倾斜问题,大量的重复数据会进入同一个reduce模块中,使得排序任务的运行时间过长(例如,长达十几个小时)。
技术实现思路
在一方面,本专利技术的实施例提供了一种用于获得数据排名的方法,包括如下步骤:(1)基于在第一表中的所述数据的主字段和第一排序字段确定在第二表中的第二排序字段和与所述第二排序字段的每个字段值对应的主字段个数;(2)基于所述第二排序字段的每个字段值对所述第二排序字段进行排序;(3)基于经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确 ...
【技术保护点】
1.一种用于获得数据排名的方法,包括如下步骤:/n(1)基于在第一表中的所述数据的主字段和第一排序字段确定在第二表中的第二排序字段和与所述第二排序字段的每个字段值对应的主字段个数;/n(2)基于所述第二排序字段的每个字段值对所述第二排序字段进行排序;/n(3)基于经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定所述经排序的第二排序字段的每个字段值的排名;和/n(4)建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以获得所述主字段中的每个字段值的排名。/n
【技术特征摘要】
1.一种用于获得数据排名的方法,包括如下步骤:
(1)基于在第一表中的所述数据的主字段和第一排序字段确定在第二表中的第二排序字段和与所述第二排序字段的每个字段值对应的主字段个数;
(2)基于所述第二排序字段的每个字段值对所述第二排序字段进行排序;
(3)基于经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定所述经排序的第二排序字段的每个字段值的排名;和
(4)建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以获得所述主字段中的每个字段值的排名。
2.根据权利要求1所述的方法,其中所述步骤(4)还包括:
创建第三表;和
在所述第三表中建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以在所述第三表中获得所述主字段中的每个字段值的排名。
3.根据权利要求1所述的方法,其中所述步骤(4)还包括:
在所述第一表中建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以在所述第一表中获得所述主字段中的每个字段值的排名。
4.根据权利要求1所述的方法,其中所述排序操作包括:
将所述第二排序字段的每个字段值按照从大到小的顺序进行排列;或
将所述第二排序字段的每个字段值按照从小到大的顺序进行排列。
5.根据权利要求1所述的方法,其中所述步骤(1)通过MR引擎来实现和/或所述步骤(2)通过SPARK引擎来实现。
6.根据权利要求1所述的方法,其中所述步骤(3)还包括:
在所述第二表中迭代执行如下过程:
针对所述第二表中的所述第二排序字段的任一个字段值,将所述任一个字段值的上一个字段值的排名加上与所述上一个字段值对应的主字段个数以获得所述任一个字段值的排名,其中所述任一个字段值不包含所述第二排序字段中的第一个字段值。
7.一种用于获得数据排名的系统,包括:
去倾斜模块,其用于基于在第一表中的所述数据的主字段和第一排序字段确定在第二表中的第二排序字段和与所述第二排序字段的每个字段值对应的主字段个数;
排序模块,其用于基于所述第二排序字段的每个字段值对所述第二排序字段进行排序;
排名模块,其用于基于经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定所述经排序的第二排序字段的每个字段值的排名;和
融合模块,其用于建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以获得所述主字段中的每个字段值的排名。
8.根据权利要求7所述的系统,其中所述融合模块还包括:
用于创建第三表的模块;和
用于在所述第三表中建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以在所述第三表中获得所述主字段中的每个字段值的排名的模块。
9.根据权利要求7所述的系统,其中所述融合模块还包括:
用于在所述第一表中建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以在所述第一表中获得所述主字段中的每个字段值的排名的模块。
10.根据权利要求7所述的系统,其中所述排序模块能够将所述第二排序字段的每个字段值按照从大到小的顺序进行排列,或者所述排序模块能够将所述第二排序字段的每个字段值按照从小到大的顺序进行排列。
11.根据权利要求7所述的系统,其中所述排名模块包括:
用于在所述第二表中迭代执行如下过程的模块:
针对所述第二表中的所述第二排序字段的任一个字段值,将所述任一个字段值的上一个字段值的排名加上与所述上一个字段值对应的主字段个数以获得所述任一个字段值的排名,其中所述任一个字段值不包含所述第二排序字段中的第一个字段值。
12.一种用于获得数据排名的方法,包括如下步骤:
(1)基于在第一表中的所述数据的主字段、第一排序字段和第一分区字段确定在第二表中的第二排序字段,与所述第二排序字段的每个字段值对应的第二分区字段,以及在具有不同的所述第二分区字段的字段值的情况下、与所述第二排序字段的每个字段值对应的主字段个数;
(2)基于所述第二分区字段的每个字段值和所述第二排序字段的每个字段值对所述第二分区字段和所述第二排序字段进行排序;
(3)基于经排序的第二分区字段、经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定在具有不同的所述第二分区字段的字段值的情况下、所述经排序的第二排序字段的每个字段值的排名;和
(4)建立在具有不同的所述第二分区字段的字段值的情...
【专利技术属性】
技术研发人员:陈中演,褚振华,张磊,聂鑫伟,李策,
申请(专利权)人:中国银联股份有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。