CN105224697A - 带过滤条件的排序方法和用于执行所述方法的装置 - Google Patents

带过滤条件的排序方法和用于执行所述方法的装置 Download PDF

Info

Publication number
CN105224697A
CN105224697A CN201510783269.6A CN201510783269A CN105224697A CN 105224697 A CN105224697 A CN 105224697A CN 201510783269 A CN201510783269 A CN 201510783269A CN 105224697 A CN105224697 A CN 105224697A
Authority
CN
China
Prior art keywords
filtercondition
data
upper limit
line number
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510783269.6A
Other languages
English (en)
Other versions
CN105224697B (zh
Inventor
袁安峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201510783269.6A priority Critical patent/CN105224697B/zh
Publication of CN105224697A publication Critical patent/CN105224697A/zh
Application granted granted Critical
Publication of CN105224697B publication Critical patent/CN105224697B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供了一种带过滤条件的排序方法,包括:分析过滤条件并确定过滤条件是否有上限;如果确定过滤条件无上限,则对数据进行全局排序,并基于过滤条件执行过滤;以及如果确定过滤条件有上限,则提取上限,记为K,获取前K个数据并基于过滤条件执行过滤,K为整数。

Description

带过滤条件的排序方法和用于执行所述方法的装置
技术领域
本发明涉及大数据领域,具体地,涉及一种带过滤条件的排序方法和用于执行所述方法的装置。
背景技术
随着信息化的越来越普遍,需要处理的数据量越来越多且所需要的数据处理速度越来越快。
TopN算法是大数据领域常用的一种算法,用于快速从海量数据中获取最符合要求的N条数据。最常用的TopN算法是用最小堆算法实现的。由于使用TopN算法来处理数据不需要对数据进行全局排序,其处理效率是非常高的。
然而,在一些情况下,需要对数据进行排序后取其中一部分数据,即,带过滤条件的排序,例如,取第100条以及200条至300条的数据。在这种情况下,往往使用快速排序算法对数据进行全局排序,并对排序后的结果进行过滤,以便获取所需数据。
此外,Presto是常用的一种纯内存的交互式SQL查询引擎,它具有查询效率高的优点,并且能够跨越包括Hive、MySQL、Kafka在内的多种数据源进行查询。目前,Presto已成功应用于各种互联网公司,诸如Facebook、Netflix、Dropbox、京东等。
当在Presto中进行带过滤条件的排序时,需要将所有数据载入内存并进行全局排序。由于Presto是纯内存式的交互式SQL查询引擎,将所有数据载入内存中并进行全局排序会导致内存占用高,甚至内存溢出、CPU负载过高等问题。
发明内容
为了至少解决上述问题,本发明提供了一种带过滤条件的排序方法和用于执行所述方法的装置,该方法能够以高效地处理带过滤条件的排序,并且具有占用内存小、计算量少等优点。
本发明的示例实施例提供了一种带过滤条件的排序方法,包括:分析过滤条件并确定过滤条件是否有上限;如果确定过滤条件无上限,则对数据进行全局排序,并基于过滤条件执行过滤;以及如果确定过滤条件有上限,则提取上限,记为K,获取前K个数据并基于过滤条件执行过滤,K为整数。
所述分析过滤条件并确定过滤条件是否有上限包括:分析过滤条件是否与排序后数据的行号相关;如果过滤条件与排序后数据的行号相关,且过滤条件所需数据量受到行号的限制,则确定有上限,将与过滤条件相关的行号中的最大行号值提取作为所述上限K,否则确定无上限。
所述获取前K个数据包括:采用TopN算法来获取前K个数据。
所述对数据进行全局排序包括:采用快速排序算法来对数据进行全局排序。
本发明的示例实施例提供了一种用于实现带过滤条件的排序方法的装置,包括:过滤条件上限提取模块,配置为分析过滤条件并确定过滤条件是否有上限;排序模块,配置为响应于确定过滤条件无上限对数据进行全局排序,而响应于确定过滤条件有上限,提取上限,记为K,并获取前K个数据;以及过滤器,配置为:基于过滤条件对排序后的数据执行过滤,K为整数。
所述过滤条件上限提取模块配置为:分析过滤条件是否与排序后数据的行号相关;如果过滤条件与排序后数据的行号相关,且过滤条件所需数据量受到行号的限制,则确定有上限,将与过滤条件相关的行号中的最大行号值提取作为所述上限K,否则确定无上限。
所述排序模块配置为:采用TopN算法来获取前K个数据。
所述排序模块还配置为:采用快速排序算法来对数据进行全局排序。
附图说明
以下结合附图,将更清楚本发明的示例实施例的上述和其它方面、特征以及优点,附图中:
图1是示出了根据本公开示例实施例的用于执行带过滤条件的排序方法的装置的框图;
图2示出了根据本公开示例实施例的用于提取过滤条件上限的方法的一个实施例;以及
图3是示出了根据本公开示例实施例的带过滤条件的排序方法的一个实施例。
具体实施方式
以下参考附图描述了本发明的示例实施。本发明提供了一种带过滤条件的排序方法和用于执行所述方法的装置,该方法能够以高效地处理带过滤条件的排序,并且具有占用内存小、计算量少等优点。
应注意,为了便于描述,将本发明的方法和装置描述为被用于实现在Presto中进行带过滤条件的排序,然而这仅是多种示例实施例之一,本领域技术人员可以想到将本发明的方法和装置用于其他查询引擎,而不脱离本发明的精神和范围。
图1是示出了根据本公开示例实施例的用于执行带过滤条件的排序方法的装置100的框图。
如图1所示,用于执行带过滤条件的排序方法的装置100可以包括:过滤条件上限提取模块110,配置为分析过滤条件并确定过滤条件是否有上限;排序模块120,配置为:响应于确定过滤条件无上限,对数据进行全局排序,而响应于确定过滤条件有上限,提取上限,记为K,获取前K个数据;过滤器130,基于过滤条件对排序后的数据执行过滤,K为整数。为了清楚地理解本发明,将省略对公知结构和功能的描述。
由过滤上限提取模块110执行的用于提取过滤条件上限的方法可以包括:分析过滤条件是否与排序后数据的行号相关;如果过滤条件与排序后数据的行号相关,且过滤条件所需数据量受到行号的限制,则确定有上限,将与过滤条件相关的行号中的最大行号值提取作为所述上限K,否则确定无上限。具体地,假设rn为排序后数据的行号,则提取过滤条件出来,并对过滤条件进行分析(例如,将过滤条件进行合并和排序),得到以下几种情况:
1.如果过滤条件与rn相关,则有可能出现:
1.1)过滤条件包含明确上限,如rn≤B,在这种情况下,所提取的过滤条件上限K=B;
例如,过滤条件为行号rn大于3并且小于5,则过滤条件提取模块110通过分析可以确定过滤条件是有上限的,并且与过滤条件相关的行号中的最大行号值为5,因此可以将5提取作为过滤条件上限。
1.2)过滤条件包含隐式上限,如rn≥AlimitB(表示以A行为起点后续B行),在这种情况下,所提取的过滤条件上限K=A+B;
例如,过滤条件为从第5行开始接下来的3行,则过滤条件提取模块110通过分析可以确定该过滤条件同样是有上限的,并且可以确定与该过滤条件相关的行号中的最大行号值为8,因此可以将8提取作为过滤条件上限。
1.3)过滤条件所需数据量不受rn限制,如rn>A,在这种情况下,确定过滤条件无上限;
例如,过滤条件为行号大于5,则过滤条件提取模块110通过分析可以确定该过滤条件所需的数据量不受rn的限制,因此该过滤条件没有过滤条件上限。
2.如果过滤条件与rn无关,则确定过滤条件无上限。例如,过滤条件可以被设置为平方值大于4或数据更新时间早于2015年3月5日,在该情况下,过滤条件提取模块110确定过滤条件与行号无关,因此确定该过滤条件没有过滤条件上限。
以下参考图2描述根据本公开示例实施例的用于提取过滤条件上限的方法的一个实施例。首先,在步骤201,过滤条件提取模块110获取过滤条件。在步骤202对所述过滤条件进行合并、排序。在步骤203分析所述过滤条件以便确定该过滤条件是否存在上限。在确定该过滤条件不存在上限的情况下(203-N),向排序模块120和过滤器130发送指示该过滤条件无上限的信号以及所述过滤条件,以便对数据进行带过滤条件的全局排序;而在确定该过滤条件存在上限的情况下(无论是存在明确上限(203-Y-1)还是存在隐式上限(203-Y-2)),在步骤204提取该过滤条件的上限K(K为整数),并向排序模块120和过滤器130发送所述过滤条件上限K以及所述过滤条件,以便对前K个数据进行过滤。
以上仅给出了过滤条件的几个示例,实际的过滤条件可以是其他过滤条件或上述过滤条件中的两个或更多个的组合。过滤条件提取模块110通过对过滤条件进行合并和排序来分析过滤模块,从而确定过滤条件是否存在上限并在存在过滤条件上限的情况下确定具体上限值。
此外,本领域技术人员应理解的是上述过滤条件上限的定义同样也是示例性的,可以根据需要来限定过滤条件上限,过滤条件上限仅是用于表明相应过滤条件所需的数据量的上限值。例如,还可以在过滤条件为rn≤B的情况下,将过滤条件上限设置为B+1。
通过上述用于提取过滤条件上限的方法,可以实现带过滤条件的排序方法。具体地,所述方法包括:通过过滤条件上限提取模块110执行图2所示的用于提取过滤条件上限的方法,以便分析过滤条件并确定过滤条件是否有上限。如果过滤条件无上限,则过滤条件上限提取模块110将对过滤条件无上限加以指示的信号和所述过滤条件传送给排序模块120和过滤器130。然后,排序模块120对所有数据进行全局排序,接着过滤器130基于所述过滤条件执行过滤,从而得到最终数据。在上述情况下,排序模块120可以通过采用快速排序算法来对数据进行全局排序。如果过滤条件有上限,则过滤条件上限提取模块110提取上限K,然后,将上限K和所述过滤条件传送给排序模块120和过滤器130。排序模块120可以通过诸如采用TopN的算法来获取前K个数据,接着过滤器130基于所述过滤条件执行过滤,K为整数。应清楚的是尽管描述了排序模块120采用TopN算法来获取前K个数据的实施例,然而这仅是示例性的,排序模块120可以不采用TopN算法或通过采用其他算法来获取前K个数据。
以下参考图3,来描述根据本公开示例实施例的带过滤条件的排序方法的一个实施例。具体地,首先在步骤301,由过滤条件上限提取模块110获取过滤条件,并在步骤302对过滤条件进行分析,以便确定是否存在过滤条件上限。如果确定过滤条件存在上限(302-Y)且上限为K,则可以在步骤303通过排序模块120执行诸如TopN算法以便提取前K个数据,随后在步骤305通过过滤器130对所述前K个数据执行过滤,以便输出最终结果。然而,如果确定过滤条件不存在上限(302-N),则可以在步骤304通过排序模块120将所有数据载入内存并使用诸如快速排序算法的方法来对所有数据进行排序。然后,执行步骤305,通过过滤器130对所述前K个数据执行过滤,以便输出最终结果。
这样,本技术方案能够智能获取全局排序时过滤条件中的上限,根据上限K,获取所需要的前K条数据,然后根据过滤条件再进行过滤。根据本公开多种实施例的带过滤条件的排序方法和用于执行所述方法的装置相对于传统全局排序的方法和装置,可以减少了需要处理的数据量,因此占用内存较小且计算量也较小,效率较高。
本发明能够避免不必要的全局排序,只处理所需要的前K条数据,减少了需要处理的数据量,大大提高执行效率,并且能够节省较多内存和CPU。
以上方案仅是示出本发明构思的一个具体实现方案,本发明不限于上述实现方案。可以省略或跳过上述实现方案中的一部分处理,而不脱离本发明的精神和范围。
前面的方法可以通过多种计算机装置以可执的程序命令形式实现并记录在计算机可读记录介质中。在这种情况下,计算机可读记录介质可以包括单独的程序命令、数据文件、数据结构或其组合。同时,记录在记录介质中的程序命令可以专门设计或配置用于本发明,或是计算机软件领域的技术人员已知应用的。计算机可读记录介质包括例如硬盘、软盘或磁带等磁性介质、例如压缩盘只读存储器(CD-ROM)或数字通用盘(DVD)等光学介质、例如光磁软盘的磁光介质以及例如存储和执行程序命令的ROM、RAM、闪存等硬件装置。此外,程序命令包括编译器形成的机器语言代码和计算机通过使用解释程序可执行的高级语言。前面的硬件装置可以配置成作为至少一个软件模块操作以执行本发明的操作,并且逆向操作也是一样的。
尽管以特定顺序示出并描述了本文方法的操作,然而可以改变每个方法的操作的顺序,使得可以以相反顺序执行特定操作或使得可以至少部分地与其它操作同时来执行特定操作。此外,本发明不限于上述示例实施例,它可以在不脱离本公开的精神和范围的前提下,包括一个或多个其他部件或操作,或省略一个或多个其他部件或操作。
以上已经结合本发明的优选实施例示出了本发明,但是本领域的技术人员将会理解,在不脱离本发明的精神和范围的情况下,可以对本发明进行各种修改、替换和改变。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等价物来限定。

Claims (8)

1.一种带过滤条件的排序方法,包括:
分析过滤条件并确定过滤条件是否有上限;
如果确定过滤条件无上限,则对数据进行全局排序,并基于过滤条件执行过滤;以及
如果确定过滤条件有上限,则提取上限,记为K,获取前K个数据并基于过滤条件执行过滤,K为整数。
2.根据权利要求1所述的方法,其中所述分析过滤条件并确定过滤条件是否有上限包括:
分析过滤条件是否与排序后数据的行号相关;
如果过滤条件与排序后数据的行号相关,且过滤条件所需数据量受到行号的限制,则确定有上限,将与过滤条件相关的行号中的最大行号值提取作为所述上限K,否则确定无上限。
3.根据权利要求1所述的方法,其中所述获取前K个数据包括:采用TopN算法来获取前K个数据。
4.根据权利要求1所述的方法,其中所述对数据进行全局排序包括:采用快速排序算法来对数据进行全局排序。
5.一种用于实现带过滤条件的排序方法的装置,包括:
过滤条件上限提取模块,配置为分析过滤条件并确定过滤条件是否有上限;
排序模块,配置为响应于确定过滤条件无上限对数据进行全局排序,而响应于确定过滤条件有上限,提取上限,记为K,并获取前K个数据;以及
过滤器,基于过滤条件对排序后的数据执行过滤,K为整数。
6.根据权利要求5所述的装置,其中所述过滤条件上限提取模块配置为:
分析过滤条件是否与排序后数据的行号相关;
如果过滤条件与排序后数据的行号相关,且过滤条件所需数据量受到行号的限制,则确定有上限,将与过滤条件相关的行号中的最大行号值提取作为所述上限K,否则确定无上限。
7.根据权利要求5所述的装置,其中所述排序模块配置为:
采用TopN算法来获取前K个数据。
8.根据权利要求5所述的装置,其中所述排序模块还配置为:
采用快速排序算法来对数据进行全局排序。
CN201510783269.6A 2015-11-16 2015-11-16 带过滤条件的排序方法和用于执行所述方法的装置 Active CN105224697B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510783269.6A CN105224697B (zh) 2015-11-16 2015-11-16 带过滤条件的排序方法和用于执行所述方法的装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510783269.6A CN105224697B (zh) 2015-11-16 2015-11-16 带过滤条件的排序方法和用于执行所述方法的装置

Publications (2)

Publication Number Publication Date
CN105224697A true CN105224697A (zh) 2016-01-06
CN105224697B CN105224697B (zh) 2018-10-02

Family

ID=54993665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510783269.6A Active CN105224697B (zh) 2015-11-16 2015-11-16 带过滤条件的排序方法和用于执行所述方法的装置

Country Status (1)

Country Link
CN (1) CN105224697B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484868A (zh) * 2016-10-11 2017-03-08 华胜信泰信息产业发展有限公司 基于limit语义的数据排序方法和数据排序装置
CN107066237A (zh) * 2017-04-17 2017-08-18 东软集团股份有限公司 一种数据处理方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464451A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 一种数据记录的排序方法
CN101079033A (zh) * 2006-06-30 2007-11-28 腾讯科技(深圳)有限公司 一种综合搜索结果的排序系统及方法
CN102073649A (zh) * 2009-11-23 2011-05-25 英业达股份有限公司 依据关键字筛选发布数据的系统及其方法
CN102334098A (zh) * 2009-02-25 2012-01-25 微软公司 对交互式汇总表的多条件过滤
US20120297283A1 (en) * 2011-04-13 2012-11-22 Jason Moore Priority filter viewer
CN103136260A (zh) * 2011-11-30 2013-06-05 国际商业机器公司 评估过滤因子用于数据库中访问路径优化的方法和装置
US20140067613A1 (en) * 2012-08-30 2014-03-06 Oracle International Corporation Method and system for implementing an architecture for a sales catalog
CN103970853A (zh) * 2014-05-05 2014-08-06 浙江宇视科技有限公司 优化搜索引擎的方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464451A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 一种数据记录的排序方法
CN101079033A (zh) * 2006-06-30 2007-11-28 腾讯科技(深圳)有限公司 一种综合搜索结果的排序系统及方法
CN102334098A (zh) * 2009-02-25 2012-01-25 微软公司 对交互式汇总表的多条件过滤
CN102073649A (zh) * 2009-11-23 2011-05-25 英业达股份有限公司 依据关键字筛选发布数据的系统及其方法
US20120297283A1 (en) * 2011-04-13 2012-11-22 Jason Moore Priority filter viewer
CN103136260A (zh) * 2011-11-30 2013-06-05 国际商业机器公司 评估过滤因子用于数据库中访问路径优化的方法和装置
US20140067613A1 (en) * 2012-08-30 2014-03-06 Oracle International Corporation Method and system for implementing an architecture for a sales catalog
CN103970853A (zh) * 2014-05-05 2014-08-06 浙江宇视科技有限公司 优化搜索引擎的方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484868A (zh) * 2016-10-11 2017-03-08 华胜信泰信息产业发展有限公司 基于limit语义的数据排序方法和数据排序装置
CN106484868B (zh) * 2016-10-11 2019-07-09 华胜信泰信息产业发展有限公司 基于limit语义的数据排序方法和数据排序装置
CN107066237A (zh) * 2017-04-17 2017-08-18 东软集团股份有限公司 一种数据处理方法及装置
CN107066237B (zh) * 2017-04-17 2020-04-03 东软集团股份有限公司 一种数据处理方法及装置

Also Published As

Publication number Publication date
CN105224697B (zh) 2018-10-02

Similar Documents

Publication Publication Date Title
US9361343B2 (en) Method for parallel mining of temporal relations in large event file
US9996617B2 (en) Methods and systems for searching logical patterns
TWI603211B (zh) Construction of inverted index system based on Lucene, data processing method and device
US9563660B2 (en) Coalescing operation for query processing
CN109376196B (zh) 一种redo日志批量同步方法及装置
WO2019148713A1 (zh) Sql语句处理方法、装置、计算机设备和存储介质
CN106778079A (zh) 一种基于MapReduce的DNA序列k‑mer频次统计方法
US11841839B1 (en) Preprocessing and imputing method for structural data
US10691690B2 (en) Helper scan in a database management system
CN106021285A (zh) 一种基于Hadoop平台的海量数据增量抽取与分析方法
EP3955256A1 (en) Non-redundant gene clustering method and system, and electronic device
CN105224697A (zh) 带过滤条件的排序方法和用于执行所述方法的装置
CN111026736B (zh) 数据血缘管理方法及装置、数据血缘解析方法及装置
KR101772333B1 (ko) 이종 NoSQL 데이터베이스들간의 지능적 조인 전략 제공 방법 및 시스템
KR20210060830A (ko) 빅데이터 지능형 수집 방법 및 장치
US20220066988A1 (en) Hash suppression
CN104750846A (zh) 一种子串查找方法及装置
CN113495901B (zh) 一种面向可变长数据块的快速检索方法
CN107729518A (zh) 一种关系型数据库的全文检索方法及装置
JP3534471B2 (ja) マージソート方法及びマージソート装置
CN107544090B (zh) 一种基于MapReduce的地震数据解析存储方法
CN110543622A (zh) 文本相似度检测方法、装置、电子设备及可读存储介质
CN110990349A (zh) 一种智能系统安全体系中的不平衡日志过采样方法
KR20190137427A (ko) 최적해 도출 장치 및 최적해 도출 방법
CN113032400B (zh) 海量数据的高性能TopN查询方法、系统及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant