一种用于计算数据排名的方法和系统技术方案

技术编号:24353352 阅读:24 留言:0更新日期:2020-06-03 02:03
本发明专利技术提供了一种用于获得数据排名的方法,包括如下步骤:(1)基于在第一表中的所述数据的主字段和第一排序字段确定在第二表中的第二排序字段和与所述第二排序字段的每个字段值对应的主字段个数;(2)基于所述第二排序字段的每个字段值对所述第二排序字段进行排序;(3)基于经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定所述经排序的第二排序字段的每个字段值的排名;和(4)建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以获得所述主字段中的每个字段值的排名。

A method and system for calculating data ranking

【技术实现步骤摘要】
一种用于计算数据排名的方法和系统
本专利技术涉及大数据领域,尤其涉及一种用于计算数据排名的方法和系统。
技术介绍
在大数据领域中,存在对海量的数据进行排名的需求。例如,中国银联股份有限公司掌握数十亿张银行卡的数据,其需要按照交易笔数或交易金额大小的顺序对每张银行卡进行排序,以获得每张银行卡在所有银行卡中的具体排名。针对这种需求,在大数据领域中存在两种现有的方案。一种是直接使用MR引擎对所有数据进行排序,另一种是使用MR引擎和TotalOrderPartitioner模块对所有数据进行排序。然而,由于海量的数据中往往存在严重的数据倾斜的问题,从而可能使得现有的方案不适用。例如,对于第一种方案,在排序时使得所有数据都进入一个reduce模块,这将使得该reduce模块中的数据量过大,从而极易导致排序任务失败。对于第二种方案,其通过抽样得到待排序的数据的分割点并根据分割点将数据分发到对应的reduce模块。然而,由于数据倾斜问题,大量的重复数据会进入同一个reduce模块中,使得排序任务的运行时间过长(例如,长达十几个小时)。
技术实现思路
在一方面,本专利技术的实施例提供了一种用于获得数据排名的方法,包括如下步骤:(1)基于在第一表中的所述数据的主字段和第一排序字段确定在第二表中的第二排序字段和与所述第二排序字段的每个字段值对应的主字段个数;(2)基于所述第二排序字段的每个字段值对所述第二排序字段进行排序;(3)基于经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定所述经排序的第二排序字段的每个字段值的排名;和(4)建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以获得所述主字段中的每个字段值的排名。本专利技术的实施例还提供了一种用于获得数据排名的系统,包括:去倾斜模块,其用于基于在第一表中的所述数据的主字段和第一排序字段确定在第二表中的第二排序字段和与所述第二排序字段的每个字段值对应的主字段个数;排序模块,其用于基于所述第二排序字段的每个字段值对所述第二排序字段进行排序;排名模块,其用于基于经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定所述经排序的第二排序字段的每个字段值的排名;以及融合模块,其用于建立所述经排序的第二排序字段的每个字段值的所述排名与所述主字段中的每个字段值的对应关系,以获得所述主字段中的每个字段值的排名。在另一方面,本专利技术的实施例还提供了一种用于获得数据排名的方法,包括如下步骤:(1)基于在第一表中的所述数据的主字段、第一排序字段和第一分区字段确定在第二表中的第二排序字段,与所述第二排序字段的每个字段值对应的第二分区字段,以及在具有不同的所述第二分区字段的字段值的情况下、与所述第二排序字段的每个字段值对应的主字段个数;(2)基于所述第二分区字段的每个字段值和所述第二排序字段的每个字段值对所述第二分区字段和所述第二排序字段进行排序;(3)基于经排序的第二分区字段、经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定在具有不同的所述第二分区字段的字段值的情况下、所述经排序的第二排序字段的每个字段值的排名;和(4)建立在具有不同的所述第二分区字段的字段值的情况下、所述经排序的第二排序字段的每个字段值的排名与所述主字段中的每个字段值的对应关系,以获得在具有不同的所述第二分区字段的字段值的情况下、所述主字段中的每个字段值的排名。本专利技术的实施例还提供了一种用于获得数据排名的系统,包括:去倾斜模块,其用于基于在第一表中的所述数据的主字段、第一排序字段和第一分区字段确定在第二表中的第二排序字段,与所述第二排序字段的每个字段值对应的第二分区字段,以及在具有不同的所述第二分区字段的字段值的情况下、与所述第二排序字段的每个字段值对应的主字段个数;排序模块,其用于基于所述第二分区字段的每个字段值和所述第二排序字段的每个字段值对所述第二分区字段和所述第二排序字段进行排序;排名模块,其用于基于经排序的第二分区字段、经排序的第二排序字段和与所述经排序的第二排序字段的每个字段值对应的主字段个数确定在具有不同的所述第二分区字段的字段值的情况下、所述经排序的第二排序字段的每个字段值的排名;以及融合模块,其用于建立在具有不同的所述第二分区字段的字段值的情况下、所述经排序的第二排序字段的每个字段值的排名与所述主字段中的每个字段值的对应关系,以获得在具有不同的所述第二分区字段的字段值的情况下、所述主字段中的每个字段值的排名。在又一方面,本专利技术的实施例提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令被计算机执行时能够执行根据各个实施例所述的方法。本专利技术的实施例能精确且成功地对大数据中的海量数据进行排名,并且使得运算速度显著加快。例如,以关于银行卡的大数据为例,本专利技术的实施例不仅能够成功的完成排名,并且能将运算时间从十几小时缩短为四个小时。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过参考附图阅读下文的详细描述,本专利技术示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本专利技术的若干实施方式,其中:在附图中,相同或对应的标号表示相同或对应的部分。图1示出了根据本专利技术的一个实施例的基于排序结果来计算排名的流程图。图2示出了根据本专利技术的另一个实施例的基于排序结果来计算排名的流程图。图3示出了根据本专利技术的又一个实施例的计算具有数据倾斜问题的大数据排名的系统示意图。具体实施方式下面将参考若干示例性实施方式来描述本专利技术的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本专利技术,而并非以任何方式限制本专利技术的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。下面结合附图对本专利技术的具体实施方式进行详细描述。在本领域中,大数据是指无法在一定时间范围内用常规软件工具进行管理和处理的、包含海量数据内容的数据集合。在本文中,将以关于银行卡的大数据为例进行说明。在本领域中,数据倾斜是指大量数据在数据取值范围的一小部分中集中地重复。例如,一组大数据中共有十亿条数据,每条数据的可能的取值范围为1至10000000。如果其中有一亿条数据的值为1并且取值为其他值的数据的条数远小于一亿,则认为该组大数据具有数据倾斜问题。在本领域中,大数据可以被存储在一张或多张表中,该表通常为Hive表。在本专利技术的一些实施例中,该表(即第一张表)可以包括多个字段,例如主字段、排序字段、分区字段等。在另一些实施例中,可以再基于该表生成包含不完全相同的字段的第二张表,第二张表例如包括排序字段、主字段个数字段、分区字段、本文档来自技高网...

【技术保护点】
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

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

1