CN103902592B - 基于MapReduce实现分析函数的方法及系统 - Google Patents

基于MapReduce实现分析函数的方法及系统 Download PDF

Info

Publication number
CN103902592B
CN103902592B CN201210580817.1A CN201210580817A CN103902592B CN 103902592 B CN103902592 B CN 103902592B CN 201210580817 A CN201210580817 A CN 201210580817A CN 103902592 B CN103902592 B CN 103902592B
Authority
CN
China
Prior art keywords
row
operator
analysis
analytic function
data row
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.)
Active
Application number
CN201210580817.1A
Other languages
English (en)
Other versions
CN103902592A (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.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems 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 Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201210580817.1A priority Critical patent/CN103902592B/zh
Priority to PCT/CN2013/084860 priority patent/WO2014101520A1/zh
Publication of CN103902592A publication Critical patent/CN103902592A/zh
Priority to US14/750,887 priority patent/US20150356162A1/en
Application granted granted Critical
Publication of CN103902592B publication Critical patent/CN103902592B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1858Parallel file systems, i.e. file systems supporting multiple processors
    • 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/242Query formulation
    • G06F16/2433Query languages
    • G06F16/244Grouping and aggregation
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于MapReduce实现分析函数的方法及系统,涉及数据库领域,用于解决现有技术中基于MapReduce框架的分布式数据仓库无法使用分析函数进行数据进行分析处理的问题。本发明提供的处理数据的方法包括:表扫描算子从文件块获取数据行,将所述数据行发送至映射算子;所述映射算子接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子;所述分析算子接收所述数据行,对所述数据行进行分析得到分析结果,并将所述数据行和分析结果转发至后继算子。本发明适用于基于MapReduce框架的数据仓库领域,用于实现分析函数。

Description

基于MapReduce实现分析函数的方法及系统
技术领域
本发明涉及数据仓库领域,尤其涉及一种基于MapReduce实现分析函数的方法及系统。
背景技术
数据仓库(Data Warehouse)是按照数据结构来组织、存储和管理数据的仓库。随着计算机的推广,数据仓库已经广泛的应用于工作和生活中。目前,随着互联网及信息技术的快速发展,数据仓库不仅仅是存储和管理数据,且具备了较强的分析数据的能力。常用的数据库,例如ORACLE、PostgreSQL等,均提供了多个分析函数,可以根据用户需求对数据进行分析,向用户提供分析结果。分析函数用于计算基于数据组的某种聚集值,与聚集函数不同,分析函数对数据组进行处理后返回多行数据,而聚集函数对数据组进行处理后返回一行数据。
MapReduce是一种编程模型,用于大规模数据集的并行运算。在实现本发明的过程中,发明人发现目前基于MapReduce框架的分布式数据仓库(例如Hive数据仓库)无法进行实现分析函数进行数据处理,在数据库的使用过程中带来诸多不便。
发明内容
本发明的实施例提供一种基于MapReduce实现分析函数的方法及系统,能够解决基于MapReduce框架的分布式数据库无法实现分析函数进行数据处理的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种基于MapReduce实现分析函数的方法,所述方法包括:
表扫描算子从文件块获取数据行,将所述数据行发送至映射算子;
所述映射算子接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子,所述分析算子属于所述MapReduce框架的Reduce端;
所述分析算子接收所述数据行,对所述数据行进行分析得到分析结果,并将所述数据行和分析结果转发至后继算子。
第二方面,本发明实施例还提供了一种基于MapReduce实现分析函数的系统,所述系统包括扫描算子、映射算子和分析算子,其中:
所述扫描算子用于从文件块获取数据行,将所述数据行发送至映射算子;
所述映射算子用于接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子,所述分析算子属于所述MapReduce框架的Reduce端;
所述分析算子用于接收所述数据行,对所述数据行进行分析得到分析结果,并将所述数据行和分析结果转发至后继算子。
本发明实施例提供的基于MapReduce实现分析函数的方法及系统,能够应用于基于MapReduce框架的分布式数据库(例如腾讯分布式数据仓库、Hive数据库等)以实现数据分析,增加基于MapReduce框架的分布式数据库的功能,从而使得用户在基于MapReduce框架的分布式数据库中进行数据分析。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的基于MapReduce实现分析函数的方法的流程示意图;
图2为本发明实施例二提供的基于MapReduce实现分析函数的方法的流程示意图;
图3为本发明实施例二提供的分析算子缓冲区的结构示意图;
图4为本发明实施例二提供的分析器缓冲区的结构示意图;
图5、图6为本发明实施例三提供的基于MapReduce实现分析函数的系统的结构示意图;
图7-图14为本发明实施例二提供的基于MapReduce实现分析函数的方法中针对窗口字句的8种模式示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种基于MapReduce实现分析函数的方法,适用于基于MapReduce框架的分布式数据仓库进行数据分析,如图1所示,所述方法包括:
101、表扫描算子(TableScanOperator)从文件块获取数据行,将所述数据行发送至映射算子。
102、所述映射算子(ReduceSinkOperator)接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子,所述分析算子属于所述MapReduce框架的Reduce端。
103、所述分析算子(AnalysisOperator)接收所述数据行,对所述数据行进行分析得到分析结果,并将所述数据行和分析结果转发至后继算子。
其中,后继算子可以根据具体情况需要的操作进行确定,例如:聚合算子、过滤算子、或写文件算子等,但不仅限于此。
本发明实施例提供的基于MapReduce实现分析函数的方法,能够应用于基于MapReduce框架的分布式数据仓库(例如腾讯分布式数据仓库、Hive数据仓库等)进行数据分析分析函数,增加基于MapReduce框架的分布式数据库的功能,从而使得在基于MapReduce框架的分布式数据库中使用分析函数进行数据分析。
实施例二
本发明实施例提供了一种基于MapReduce实现分析函数的方法,适用于基于MapReduce框架的分布式数据库进行数据分析,如图2所示,所述方法包括:
201、表扫描算子从文件块获取数据行,将所述数据行发送至映射算子。
值得说明的是,本实施例提供的方法可以预设多种不同的分析函数对数据进行分析,常用的分析函数包括LAG、LEAD、RANK、DENSE_RANK、ROW_NUMBER、SUM、COUNT、AVG、MAX、MIN、RATIO_TO_REPORT等。可选的,本实施例提供的方法可以根据用户需要添加新的分析函数。
202、所述映射算子接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子,所述分析算子属于所述MapReduce框架的Reduce端。
例如,所述映射算子可以通过如下方法确定分析函数的归约键、分割键和排序键,具体包括:
(1)将所述分析函数的分区子句中的列以及排序子句中的列作为归约键;或者
当所述分析函数没有排序子句但有distinct关键字时,以distinct列作为归约键;或者
当分析函数不含分区子句、排序子句,也不含distinct关键字时,指定任意常量作为归约键;
(2)将所述分析函数的分区子句中的列作为分割键;或者
当所述分析函数不含分区子句时,以与归约键相同的常量作为分割键。
(3)当所述分析函数含有排序子句时,以排序子句中的列作为排序键。
203、所述分析算子接收所述数据行,将所述数据行存储于分析算子缓冲区以供所有分析器使用。
其中,如图3所示,分析算子缓冲区包括内存缓冲区和磁盘缓冲区,所述分析算子缓冲区优先将接收的新数据行放入内存缓冲区;如果内存缓冲区已满,则将内存缓冲区中较旧的数据行存入所述磁盘缓冲区,以释放内存缓冲区的存储空间。为了实现数据共享,在分析算子中需要提供一个分析算子缓冲区AnalysisBuffer,该缓冲区具备以下特点:
a.允许指定长度的数据保存在内存中;
b.当长度超出限定值后,将原内存缓冲区中的一半内容溢出到硬盘;
c.允许用户按照索引访问其中的元素;
d.允许用户从头开始删除其中已转发的元素。
204、所述分析算子解析出所述数据行的分区字段和排序字段,判断所述数据行是否属于当前分区,其中,所述当前分区是所述分析算子接收到的上一数据行所属的分区;若是,执行205;若否,执行206。
205、所述分析算子调用分析函数对应的分析器对所述数据行进行分析,得到分析结果,将所述分析结果存储于分析器缓冲区。
值得说明的是,一个分析函数对应一个分析器,每个分析器对应一个分析器缓冲区,用于存储与每一数据行相关的分析结果、中间结果或总的聚合结果。如图4所示,所述分析器缓冲区包括内存缓冲区和磁盘缓冲区(位于图4所示磁盘中s),所述内存缓冲区包括输出缓冲区和输入缓冲区,所述分析器缓冲区用于对分析结果进行缓冲和更新。具体的:
当所述分析器缓冲区对分析结果进行缓冲时,将所述分析结果存储于所述输出缓冲区;如果所述输出缓冲区已满,则将所述输出缓冲区中的内容存入所述磁盘缓冲区,以释放所述输出缓冲区的存储空间;
当所述分析器缓冲区对分析结果进行更新时:
如果待更新行存储于输出缓冲区,则直接根据所述输出缓冲区中的待更新行和接收到的新数据行对分析结果进行更新;
如果待更新行存储于输入缓冲区,则直接根据所述输入缓冲区中的待更新行和接收到的新数据行对分析结果进行更新;
如果待更新行存储于磁盘,则将所述输入缓冲区中的内容存储到所述磁盘,并将所述磁盘中的待更新行所在的缓冲块读入所述输入缓冲区,以使得根据所述输入缓冲区中的待更新行和接收到的新数据行对分析结果进行更新。
206、所述分析算子结束对所述当前分区的分析,将所述分析算子缓冲区中存储的当前分区的所有数据行、以及所述分析器缓冲区中存储的当前分区的所有分析结果汇总成新的数据行转发至后继算子。
值得说明的是,如果所述分析函数不需要累计,那么在所述调用分析函数对应的分析器对所述数据行进行分析,得到分析结果之后,直接将所述数据行和分析结果汇总转发至后继算子,无需对所述数据行和分析结果进行缓存。
为了便于理解,本实施例提供了11种常见的分析函数的算法概述,具体如下:
算法1:LAG算法概述:
假设调用的分析函数为lag(col,offset)over(...)。
LAG的分析器缓冲区中仅有一个行号计数器p(初始值为-1)。当分析新的一行时,将p加1,如果p>=offset,则将p所指向的行的该列设为p-offset行col列的内容,并指示p-offset行及之前的行的内容可以转发;否则,将当前行的结果设为null,所有行都不得转发。
算法2:LEAD算法概述:
假设调用的分析函数为lead(col,offset)over(...)。
LEAD分析器缓冲区中有两个指针,指针p1指向当前尚未处理的最小行,指针p2指向当前行。当分析新的一行时,将指针p2加1,此时,如果p2-p1>=offset,则将p1所指向行的结果设为p2所指行col列的内容,且p1++,行号小于等于p1的行均可转发。
算法3:RANK算法概述:
RANK分析器缓冲区中有当前的序号rank,当前序号对应的值value,具有当前序号的行数number。当分析新的一行时,如果新的一行的值与value相等,则将该行的rank列设为rank,分析器缓冲区中的number++;否则,将rank列设为rank+number,同时将分析器缓冲区中的rank设为rank+number,value设为新行的指定值,number设为1。当前处理后的所有行均可转发。
算法4:DENSE_RANK算法概述:
DESNSE_RANK分析器缓冲区中有当前的序号rank,当前序号对应的值value,具有当前序号的行号number。当分析新的一行时,如果新的一行的值与value相等,则将该行的rank列设为rank,分析器缓冲区中的number++;否则,将rank列设为rank+1,同时将分析器缓冲区中的rank设为rank+1,value设为新行的指定值,number设为1。当前处理后的行均可转发。
算法5:ROW_NUMBER算法概述:
ROW_NUMBER分析器缓冲区中只有一个rownumber值(初始值为-1)。当分析新的一行的时候,将新行的rownumber列设为rownumber+1,同时将分析器缓冲区中的rownumber设为rownumber+1。当前处理后的行均可转发。
算法6:SUM算法概述:
在SUM分析器缓冲区中,保存一个变量,即当前总和sum。当分析新的一行时,将sum的值加上新行的指定表达式值(需非空)存入sum即可。
在整个分区分析完成前不得转发。分区分析完成后,将sum值作为每一行的计算结果即可。
算法7:COUNT算法概述:
COUNT分析器缓冲区中只有一个count计数器。每分析一个新行,如果待分析列的值非空,就将该计数器加一。
在整个分区分析完成前不得转发。分区分析完成后,将count值作为每一行的计算结果即可。
算法8:AVG算法概述:
AVG分析器缓冲区中有两个计数器值,一个是sum(初始值为0),一个是count(初始值为0)。当分析新的一行时,如果表达式为非空值,count++,sum设为sum+新行的表达式值。
在整个分区分析完成前不得转发任一行。分区分析完成后,如果count!=0,将sum/count值作为每一行的计算结果即可;否则,将null作为每一行的分析结果。
算法9:MAX算法概述:
MAX分析器缓冲区中只有一个max值。分析新行时,将新行的表达式(非空)与max比较,如果比max大则更新max。在分析完分区时,将所有的行的指定列设为max即可。
在整个分区分析完成前不得转发。
算法10:MIN算法概述:
MIN分析器缓冲区中只有一个min值。分析新行时,将新行的表达式(非空)与min比较,如果比min小则更新min。在分析完分区时,将所有的行的指定列设为min即可。
在整个分区分析完成前不得转发。
算法11:RATIO_TO_REPORT算法概述:
RATIO_TO_REPORT类的分析器缓冲区中只有一个sum值。分析新行时,将新行的表达式(非空)与sum相加设为sum的值。在分析完分区时,用所有的行的指定列分别除以sum设为该列的值即可,如果sum为0,则均置为null。
在整个分区分析完成前不得转发。
值得说明的是,分析函数是基于一组记录(例如多个数据行)为每一行数据计算聚集值得到分析结果的,所基于的这一组记录称之为“窗口”(window)。对于每一行记录,都有一个窗口,用它来指定分析函数执行聚集运算的记录集。针对带窗口字句的情况,本实施例提供了如下8种模式以供参考:
模式1:
如图7所示,模式1中的代表语句为:
Rows between window.lag preceding and window.lead following //位于当前行之前window.lag行和之后window.lead行范围内;
Range between window.lag preceding and window.lead following //比当前值小(或大)window.lag和比当前值大(或小)window.lead的范围内。
模式2:
如图8所示,模式2中的代表语句为:
Rows between window.lag preceding and window.lead preceding //位于当前行之前window.lag行和window.lead行的范围内;
Range between window.lag preceding and window.lead preceding //比当前值小(或大)window.lag和window.lead的范围内。
模式3:
如图9所示,模式3中的代表语句为:
Rows between window.lag following and window.lead following //位于当前行之后window.lag行和window.lead行的范围内;
Range between window.lag following and window.lead following //比当前值大(或小)window.lag和window.lead的范围内。
模式4:
如图10所示,模式4中的代表语句为:
Rows between unbounded preceding and window.lead following //从最开始到当前行之后window.lead行的范围内;
Range between unbounded preceding and window.lead following //从最开始到比当前值大(或小)window.lead的范围内。
模式5:
如图11所示,模式5中的代表语句为:
Rows between window.lag preceding and unbounded following //从当前行之前window.lag行到最后的范围内;
Range between window.lag preceding and unbounded following //从比当前值小(或大)window.lag到最后的范围内。
模式6:
如图12所示,模式6中的代表语句为:
Rows between unbounded preceding and unbounded following //从开始到最后;
Range between unbounded preceding and unbounded following //从开始到最后。
模式7:
如图13所示,模式7中的代表语句为:
Rows between unbounded preceding and window.lead preceding //从开始到window.lead行之前的范围内;
Range between unbounded preceding and window.lead preceding //从开始到比当前值小(或大)window.lead的范围内。
模式8:
如图14示,模式8中的代表语句为:
Rows between window.lag following and unbounded following //从当前行之后window.lag行到最后的范围内;
Range between window.lag following and unbounded following //从比当前值大(或小)window.lag到最后的范围内。
根据上述8种模式,可以很容易的实现出相应的分析函数处理算法。
本发明实施例提供的基于MapReduce实现分析函数的方法,能够应用于基于MapReduce框架的分布式数据库(例如腾讯分布式数据仓库、Hive数据仓库等)以实现数据分析,增加基于MapReduce框架的分布式数据库的功能,从而使得在基于MapReduce框架的分布式数据库中进行数据分析。
实施例三
本发明实施例提供了一种基于MapReduce实现分析函数的系统,能够实现上述方法实施例,如图5所示,所述系统包括扫描算子51、映射算子52和分析算子53,其中:
所述扫描算子51用于从文件块获取数据行,将所述数据行发送至映射算子52;
所述映射算子52用于接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子53,所述分析算子53属于所述MapReduce框架的Reduce端;
所述分析算子53接收所述数据行,对所述数据行进行分析得到分析结果,并将所述数据行和分析结果转发至后继算子。
可选的,所述映射算子52具体用于将所述分析函数的分区子句中的列以及排序子句中的列作为归约键;或者
所述映射算子52还用于当所述分析函数没有排序子句但有distinct关键字时,以distinct列作为归约键;或者
所述映射算子52还用于当分析函数不含分区子句、排序子句,也不含distinct关键字时,指定任意常量作为归约键;
所述映射算子52还用于将所述分析函数的分区子句中的列作为分割键;或者
所述映射算子52还用于当所述分析函数不含分区子句时,以与归约键相同的常量作为分割键;
所述映射算子52还用于当所述分析函数含有排序子句时,以排序子句中的列作为排序键。
进一步的,如图6所示,所述分析算子53包括:
存储模块531,用于接收所述数据行,将所述数据行存储于分析算子缓冲区以供所有分析器使用;
判断模块532,用于解析出所述数据行的分区字段和排序字段,判断所述数据行是否属于当前分区,所述当前分区是所述分析算子接收到的上一数据行所属的分区;
若是,则所述分析算子53调用分析函数对应的分析器对所述数据行进行分析,得到分析结果,将所述分析结果存储于分析器缓冲区;
若否,则所述分析算子53结束对所述当前分区的分析,将所述分析算子缓冲区中存储的当前分区的所有数据行、以及所述分析器缓冲区中存储的当前分区的所有分析结果汇总成新的数据行转发至后继算子。
可选的,如果所述分析函数不需要累计,那么所述分析算子53在得到分析结果之后,直接将所述数据行和分析结果汇总转发至后继算子,无需对所述数据行和分析结果进行缓存。
本发明实施例提供的基于MapReduce实现分析函数的系统,能够应用于基于MapReduce框架的分布式数据库(例如腾讯分布式数据仓库、Hive数据库等)以实现数据分析,增加基于MapReduce框架的分布式数据库的功能,从而使得在基于MapReduce框架的分布式数据库中实现分析函数进行数据分析。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种基于MapReduce实现分析函数的方法,其特征在于,包括:
表扫描算子从文件块获取数据行,将所述数据行发送至映射算子;
所述映射算子接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子,所述分析算子属于所述MapReduce框架的Reduce端;
所述分析算子接收所述数据行,将所述数据行存储于分析算子缓冲区;
所述分析算子解析出所述数据行的分区字段;
若根据所述分区字段确定所述数据行属于当前分区,则调用分析函数对应的分析器对所述数据行进行分析,得到分析结果,将所述分析结果存储于分析器缓冲区;
若根据所述分区字段确定所述数据行不属于当前分区,则结束对所述当前分区的分析,将所述分析算子缓冲区中存储的当前分区的所有数据行、以及所述分析器缓冲区中存储的当前分区的所有分析结果汇总成新的数据行转发至后继算子;
其中所述当前分区是所述分析算子接收到的上一数据行所属的分区。
2.根据权利要求1所述的方法,其特征在于,所述确定分析函数的归约键包括:
将所述分析函数的分区子句中的列以及排序子句中的列作为归约键。
3.根据权利要求1所述的方法,其特征在于,所述确定分析函数的归约键,包括:
当所述分析函数没有排序子句但有distinct关键字时,以distinct列作为归约键。
4.根据权利要求1所述的方法,其特征在于,所述确定分析函数的归约键,包括:
当分析函数不含分区子句、排序子句,也不含distinct关键字时,指定任意常量作为归约键。
5.根据权利要求1所述的方法,其特征在于,所述确定分析函数的分割键,包括:
将所述分析函数的分区子句中的列作为分割键。
6.根据权利要求1所述的方法,其特征在于,所述确定分析函数的分割键,包括:
当所述分析函数不含分区子句时,以与归约键相同的常量作为分割键。
7.根据权利要求1所述的方法,其特征在于,所述确定分析函数的排序键,包括:
当所述分析函数含有排序子句时,以排序子句中的列作为排序键。
8.根据权利要求1所述的方法,其特征在于,如果所述分析函数不需要累计,那么在所述调用分析函数对应的分析器对所述数据行进行分析,得到分析结果之后,直接将所述数据行和分析结果汇总转发至后继算子,无需对所述数据行和分析结果进行缓存。
9.根据权利要求1所述的方法,其特征在于,所述分析算子缓冲区包括内存缓冲区和磁盘缓冲区,所述分析算子缓冲区优先将接收的新数据行放入内存缓冲区;如果内存缓冲区已满,则将内存缓冲区中较旧的数据行存入所述磁盘缓冲区,以释放内存缓冲区的存储空间。
10.根据权利要求1所述的方法,其特征在于,所述分析器缓冲区包括内存缓冲区和磁盘缓冲区,所述内存缓冲区包括输出缓冲区和输入缓冲区,所述分析器缓冲区用于对分析结果进行缓冲和更新;
所述分析器缓冲区对分析结果进行缓冲时,将所述分析结果存储于所述输出缓冲区;如果所述输出缓冲区已满,则将所述输出缓冲区中的内容存入所述磁盘缓冲区,以释放所述输出缓冲区的存储空间;
所述分析器缓冲区对分析结果进行更新时:
如果待更新行存储于输出缓冲区,则直接根据所述输出缓冲区中的待更新行和接收到的新数据行对分析结果进行更新;
如果待更新行存储于输入缓冲区,则直接根据所述输入缓冲区中的待更新行和接收到的新数据行对分析结果进行更新;
如果待更新行存储于磁盘缓冲区,则将所述输入缓冲区中的内容存储到所述磁盘缓冲区,并将所述磁盘缓冲区中的待更新行所在的缓冲块读入所述输入缓冲区,以使得根据所述输入缓冲区中的待更新行和接收到的新数据行对分析结果进行更新。
11.一种基于MapReduce实现分析函数的系统,其特征在于,包括扫描算子、映射算子和分析算子,其中:
所述扫描算子用于从文件块获取数据行,将所述数据行发送至映射算子;
所述映射算子用于接收所述数据行,确定分析函数的归约键、分割键和排序键,通过MapReduce框架将所述数据行发送至分析算子,所述分析算子属于所述MapReduce框架的Reduce端;
所述分析算子包括:
存储模块,用于接收所述数据行,将所述数据行存储于分析算子缓冲区以供所有分析器使用;
判断模块,用于解析出所述数据行的分区字段;
若根据所述分区字段确定所述数据行属于当前分区,则所述分析算子调用分析函数对应的分析器对所述数据行进行分析,得到分析结果,将所述分析结果存储于分析器缓冲区;
若根据所述分区字段确定所述数据行不属于当前分区,则所述分析算子结束对所述当前分区的分析,将所述分析算子缓冲区中存储的当前分区的所有数据行、以及所述分析器缓冲区中存储的当前分区的所有分析结果汇总成新的数据行转发至后继算子;
其中所述当前分区是所述分析算子接收到的上一数据行所属的分区。
12.根据权利要求11所述的系统,其特征在于,所述映射算子具体用于将所述分析函数的分区子句中的列以及排序子句中的列作为归约键。
13.根据权利要求11所述的系统,其特征在于,当所述分析函数没有排序子句但有distinct关键字时,以distinct列作为归约键。
14.根据权利要求11所述的系统,其特征在于,当分析函数不含分区子句、排序子句,也不含distinct关键字时,指定任意常量作为归约键。
15.根据权利要求11所述的系统,其特征在于,所述映射算子还用于将所述分析函数的分区子句中的列作为分割键。
16.根据权利要求11所述的系统,其特征在于,当所述分析函数不含分区子句时,以与归约键相同的常量作为分割键。
17.根据权利要求11所述的系统,其特征在于,所述映射算子还用于当所述分析函数含有排序子句时,以排序子句中的列作为排序键。
18.根据权利要求11所述的系统,其特征在于,如果所述分析函数不需要累计,那么所述分析算子在得到分析结果之后,直接将所述数据行和分析结果汇总转发至后继算子,无需对所述数据行和分析结果进行缓存。
CN201210580817.1A 2012-12-27 2012-12-27 基于MapReduce实现分析函数的方法及系统 Active CN103902592B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201210580817.1A CN103902592B (zh) 2012-12-27 2012-12-27 基于MapReduce实现分析函数的方法及系统
PCT/CN2013/084860 WO2014101520A1 (zh) 2012-12-27 2013-10-09 基于MapReduce实现分析函数的方法及系统
US14/750,887 US20150356162A1 (en) 2012-12-27 2015-06-25 Method and system for implementing analytic function based on mapreduce

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210580817.1A CN103902592B (zh) 2012-12-27 2012-12-27 基于MapReduce实现分析函数的方法及系统

Publications (2)

Publication Number Publication Date
CN103902592A CN103902592A (zh) 2014-07-02
CN103902592B true CN103902592B (zh) 2018-02-27

Family

ID=50993920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210580817.1A Active CN103902592B (zh) 2012-12-27 2012-12-27 基于MapReduce实现分析函数的方法及系统

Country Status (3)

Country Link
US (1) US20150356162A1 (zh)
CN (1) CN103902592B (zh)
WO (1) WO2014101520A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10672078B1 (en) * 2014-05-19 2020-06-02 Allstate Insurance Company Scoring of insurance data
CN104679884B (zh) * 2015-03-16 2018-04-10 北京奇虎科技有限公司 数据库的数据分析方法、装置以及系统
CN106406985B (zh) * 2016-09-21 2019-10-11 北京百度网讯科技有限公司 分布式计算框架和分布式计算方法
CN107886286A (zh) * 2016-09-29 2018-04-06 中国石油化工股份有限公司 地震数据处理作业流方法及系统
CN108121745B (zh) * 2016-11-30 2021-08-06 中移(苏州)软件技术有限公司 一种数据加载方法和装置
US11301468B2 (en) * 2019-09-13 2022-04-12 Oracle International Corporation Efficient execution of a sequence of SQL operations using runtime partition injection and iterative execution
CN112783924B (zh) * 2019-11-07 2024-07-16 北京沃东天骏信息技术有限公司 一种脏数据识别方法、装置和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09305616A (ja) * 1996-05-10 1997-11-28 Hitachi Ltd データ分析方法
CN102663083A (zh) * 2012-04-01 2012-09-12 南通大学 基于分布式计算的大规模社交网络信息抽取方法
CN102779025A (zh) * 2012-03-19 2012-11-14 南京大学 一种基于Hadoop的并行化PLSA方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343367B2 (en) * 2005-05-12 2008-03-11 International Business Machines Corporation Optimizing a database query that returns a predetermined number of rows using a generated optimized access plan
US9165044B2 (en) * 2008-05-30 2015-10-20 Ethority, Llc Enhanced user interface and data handling in business intelligence software
JP5187017B2 (ja) * 2008-06-18 2013-04-24 富士通株式会社 分散ディスクキャッシュシステム及び分散ディスクキャッシュ方法
US9003110B2 (en) * 2010-01-13 2015-04-07 International Business Machines Corporation Dividing incoming data into multiple data streams and transforming the data for storage in a logical data object
US8918388B1 (en) * 2010-02-26 2014-12-23 Turn Inc. Custom data warehouse on top of mapreduce
CN102129457A (zh) * 2011-03-09 2011-07-20 浙江大学 大规模语义数据路径查询的方法
US9798831B2 (en) * 2011-04-01 2017-10-24 Google Inc. Processing data in a MapReduce framework
US9210044B2 (en) * 2012-07-27 2015-12-08 Dell Products L.P. Automated remediation with an appliance

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09305616A (ja) * 1996-05-10 1997-11-28 Hitachi Ltd データ分析方法
CN102779025A (zh) * 2012-03-19 2012-11-14 南京大学 一种基于Hadoop的并行化PLSA方法
CN102663083A (zh) * 2012-04-01 2012-09-12 南通大学 基于分布式计算的大规模社交网络信息抽取方法

Also Published As

Publication number Publication date
US20150356162A1 (en) 2015-12-10
CN103902592A (zh) 2014-07-02
WO2014101520A1 (zh) 2014-07-03

Similar Documents

Publication Publication Date Title
CN103902592B (zh) 基于MapReduce实现分析函数的方法及系统
CN103177058B (zh) 存储为行存储和列存储二者的混合数据库表
CN103177056B (zh) 存储为行存储和列存储二者的混合数据库表
EP2608071A1 (en) Hybrid database table stored as both row and column store
US8266147B2 (en) Methods and systems for database organization
TWI512506B (zh) Sorting method and device for search results
US20130046783A1 (en) Real time searching and reporting
CN104077407B (zh) 一种智能数据搜索系统及方法
WO2020087082A1 (en) Trace and span sampling and analysis for instrumented software
WO2015039478A1 (zh) 垃圾短信的识别方法及装置
CN105893615B (zh) 基于手机取证数据的机主特征属性挖掘方法及其系统
CN106570140B (zh) 确定信息热点的方法及装置
CN105550359B (zh) 一种基于垂直搜索的网页排序方法、装置及服务器
EP4109293A1 (en) Data query method and apparatus, electronic device, storage medium, and program product
CN104636502A (zh) 一种查询系统的数据加速查询方法
US11429629B1 (en) Data driven indexing in a spreadsheet based data store
CN103034656A (zh) 章节内容分层方法和装置、文章内容分层方法和装置
CN1809108A (zh) 基于过滤片的话单内存排重方法
CN106844497A (zh) 一种数据库代码的检查装置和方法
CN108959584B (zh) 一种基于社区结构的处理图数据的方法及装置
CN113505172B (zh) 数据处理方法、装置、电子设备及可读存储介质
CN106682107B (zh) 数据库表关联关系确定方法及装置
CN107315840A (zh) 数据库中存储空间的管理方法和装置
CN113377771A (zh) 一种数据探索方法、系统、设备及存储介质
CN109635074A (zh) 一种基于舆情信息的实体关系分析方法及终端设备

Legal Events

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