利用映射缩减集成事件处理的制作方法_2

文档序号:8516055阅读:来源:国知局
--在下一批次中加以考虑。根据本发明的实施例,连续事件处理器相对于在(并且,在一种实施例中,只在)当前执行的映射缩减作业已开始被处理之后到达数据流中的事件连续地执行CEP。在这种实施例中,连续事件处理器相对于那些新到达的事件执行与映射缩减算法工具相对于之前在分布式数据存储装置中存储的事件作为计划作业的一部分正在执行的查询相同或类似的查询。随着那些事件到达数据流,连续事件处理器可以相对于新到达的事件执行这个查询--从而,CEP查询可以实时地执行。在本发明的实施例中,每次连续事件处理器产生查询结果时,处理器将那个查询结果与最近完成的映射缩减作业产生的最近的结果合并,以便产生统一的查询结果。统一的查询结果反映了相对于已存储在分布式数据存储装置中的事件数据以及比那个存储装置更近到达的事件数据执行的查询处理。
[0026]图1是根据本发明的实施例说明用于利用映射缩减算法工具和CEP的组合计算相对于大量数据的实时查询结果的技术100的流程图。虽然技术100被示为包括以特定顺序执行的某些操作,但是本发明的备选实施例可以包括潜在地以不同顺序执行附加的、较少的、或不同的操作。
[0027]在方框102,映射缩减算法工具(例如,Apache Hadoop)相对于存储在分布式数据存储装置中的事件数据开始执行映射缩减作业。在实施例中,映射缩减作业包括相对于存储在分布式数据存储装置中的所有事件的指定子集执行指定的查询。这个子集可以包括在分布式数据存储装置中存储的整个事件的集合,其中包括,自从之前的映射缩减作业(如果有的话)开始执行以后存储在分布式数据存储装置中的事件。
[0028]在方框104,当映射缩减算法工具正在相对于存储在分布式数据存储装置中的事件数据执行映射缩减作业时,连续事件处理器针对经数据流连续到达的事件连续地执行CQL查询。CQL查询可以作用于在具有以当前时间为结束点的指定时间窗口内接收到的所有事件。CQL查询可以在其执行中聚合来自这些事件的数据。在实施例中,CQL查询与被当前执行的映射缩减作业执行的查询相同、或相似、或执行相同的功能,但是相对于不同的事件。在实施例中,CQL查询从其处理中排除所有已存储在分布式数据存储装置中的事件(其正在被当前执行的映射缩减作业处理)。如以上所讨论的,在实施例中,这些事件也存储在分布式数据存储装置中,但是没有在当前执行的映射缩减作业的执行中考虑。
[0029]在方框106,连续事件处理器基于相对于在指定时间窗口内的数据事件的CQL查询的最近执行计算初步的查询结果。
[0030]在方框108,如果任何映射缩减作业完成,则连续事件处理器将初步的查询结果与最近完成的映射缩减作业的结果合并。这种合并产生统一的查询结果。在本发明的一种实施例中,如果还没有映射缩减作业完成,则初步的查询结果变为统一的查询结果。
[0031]在方框110,连续事件处理器将统一的查询结果输出到感兴趣的监听实体。例如,连续事件处理器可以将统一的查询结果输出到已向连续事件处理器注册以接收这种统一的查询结果的应用程序。
[0032]在方框112,做出关于最近启动的映射缩减作业是否完成的决定。如果最近启动的映射缩减作业已完成,则控制传递到方框114。否则,控制返回到方框104。
[0033]在方框114,映射缩减作业的结果被持久地保存。例如,映射缩减作业的结果可以存储在连续事件处理器能够访问的硬盘驱动器上。如以上结合方框108所讨论的,连续事件处理器可以将这个结果与处理器自己的初步结果合并以产生统一的查询结果。在实施例中,映射缩减作业的结果覆盖并替换之前执行的映射缩减作业的之前存储的结果。
[0034]在方框116,映射缩减算法工具(例如,Apache Hadoop)相对于存储在分布式数据存储装置中的事件数据开始执行新的映射缩减作业。在实施例中,映射缩减作业包括相对于存储在分布式数据存储装置中的所有事件的指定子集执行指定的查询。在实施例中,这个子集包括自从之前的映射缩减作业开始执行以后被存储在分布式数据存储装置中的事件。控制传递回方框104。
[0035]例如,如果最近完成的映射缩减作业的结果指示特定单词在一组网页中的数量是23,并且如果新的网页作为事件到达数据流中,并且如果连续事件处理器确定该特定单词在那个新网页中的数量是5,则连续事件处理器可以合并这个来自最近完成的映射缩减作业结果的结果,以产生统一的查询结果28。新网页可以被添加到分布式数据存储装置,以便后续的(不是当前的)映射缩减作业可以在包括该新网页的事件数据上操作。
[0036]图2是根据本发明的实施例说明用于利用映射缩减算法工具和CEP的组合计算相对于大量数据的实时查询结果的系统200的框图。在实施例中,系统200包括事件源202、包括事件的数据流204、连续事件处理器206、映射缩减算法工具208、分布式数据存储装置210和监听实体212。在实施例中,随着那些事件发生,事件源202可以连续地将事件(例如,销售交易、股票价格等)添加到数据流204。连续事件处理器206可以连续地从数据流204中读取事件,并且可以连续地相对于那些事件执行CQL查询。连续事件处理器206还可以连续地存储它读取到分布式数据存储装置210中的事件。连续事件处理器206还可以连续地合并CQL查询的执行结果和由映射缩减算法工具208执行的完成的映射缩减作业的最新结果。映射缩减算法工具208可以一个接一个地执行映射缩减作业。每个这种映射缩减作业可以相对于截至那个映射缩减作业开始执行时已存储在分布式数据存储装置210中的事件执行与CQL查询相同或相似的查询。当每个这种映射缩减作业完成时,它可以持久地在对连续事件处理器206来说是可访问的介质(潜在的分布式数据存储装置210)上保存其查询执行的结果,用于合并的目的。监听实体212可以连续地接收由连续事件处理器206输出的统一的查询结果,并且潜在地使用那些向人类用户显示这种结果。
[0037]在一种实施例中,CQL查询和对应的映射缩减(例如,Hadoop)作业可以被用户单独地和手动地创建和执行。但是,在备选的实施例中,CQL查询和对应的映射缩减作业的创建和执行可以被集成,使得可以基于现有的对应的CQL查询自动生成映射缩减作业(或程序)。例如,在实施例中,为了创建基于在数据流中表示的销售交易事件确定最畅销产品的CQL查询,用户可以利用CEP系统。映射缩减程序然后可以被映射缩减程序生成器利用CQL查询作为输入自动生成。程序(或者相同的程序或者单独的程序)也可以被自动地生成,以连续地合并由每个执行的映射缩减作业返回的结果和由CQL查询的执行返回的结果。
[0038]映射缩减作业可以用称为Pig Latin的特定语言来表示。Pig Latin是高级描述性语言。例如,在Pig Latin中,作业或程序可以被表达加载数据、过滤那个数据、将那个数据与其它数据连接等。Pig Latin程序可以按照运算符进行表达。这些运算符可以执行诸如加载数据、过滤数据、连接数据等的操作。在本发明的实施例中,Pig Latin程序生成器接收CQL查询作为输入,并且自动地将那个查询分解为其组件运算符中。这种CQL运算符可以包括过滤运算符、连接运算符、投影运算符等。在本发明的实施例中,Pig Latin程序生成器利用CQL运算符和Pig Latin运算符之间的映射,以便自动地把一组运算符转换到另一组运算符;这种映射可以包括一对一的运算符到运算符的映射,以及一对多的运算符到运算符的映射以及多对一的运算符到运算符的映射以及多对多的运算符到运算符的映射。
[0039]在实施例中,在基于对应的CQL运算符自动地生成一组Pig Latin运算符之后,Pig Latin程序生成器自动地生成并存储可以包括CQL运算符和Pig Latin运算符两者的流。这种流可以指示CQL运算符的输出要成为对Pig Latin运算符的输入,和/或PigLatin运算符的输出要成为对CQL运算符的输入。因此,可以生成运算符的有向图,该有向图包括Pig Latin和CQL运算符两者。在这个有向图中,运算符节点之间的边可以指示数据从运算符到运算符的流动。潜在地,一个运算符可以对多个运算符输出数据,并且多个运算符可以对单个运算符输出数据。图中的叶节点运算符可以执行CQL操作结果和映射缩减操作结果之间的最终合并。在以这种方式自动地生成有向图之后,可以自动地执行图的某些优化,潜在地包括基于那些运算符执行的运算符类型合并图中的一些运算符节点。例如,都执行过滤操作的CQL运算符和Pig Latin运算符可以被合并在一起成为单个运算符。
[0040]在执行时,可以对有向图进行解释。当在图中遇到Pig Latin运算符或被一条或多条边链接的一组Pig Latin运算符时,执行那些运算符的操作的对应的映射缩减程序可以被自动地执行。映射缩减程序的结果可以作为输入事件被发送到对应于有向图中CQL运算符的CQL查询。
[0041]利用单种语言连接连续和批处理的结果
[0042]如以上所讨论的,在一种实施例中,连续查询处理器可以针对当前到达事件流中的事件连续地处理CQL查询,而映射缩减程序同时处理之前从流中接收到并存储的事件。由连续查询处理器执行的处理的结果可以定期地与由映射缩减程序执行的处理的结果合并,以便生成对大型数据集的相对新的结果。
[0043]根据实施例,连续查询处理器执行用诸如CQL的单种高级语言编写的查询。作为这种查询的编译结果,可以在运行时生成两个方面。一个方面执行事件流处理。在同一编译期间,作为另一方面,可以生成附加的运算符。这些附加的运算符可以被集成到Hadoop或一些其它映射缩减工具中。映射缩减工具可以执行面向批次的处理。流处理的结果可以与批处理的结果合并。因此,可以操纵大量的数据同时还允许实时地获得结果。
[0044]事件处理应用,诸如Oracle Event Processing (Oracle事件处理,OEP),被设计为实时地处理事件。但是,这种应用传统上被设计为处理相对短暂存在的事件。这种处理传统上不是很深入。事件处理应用传统上处理在处理发生时发生的事件。那些事件处理应用传统上没有检查可能几年前存储在数据库中的数据。
[0045]映射缩减工具,诸如Hadoop,可以在已存储在诸如数据库的储存库中的大量数据上操作,其中储存库可以物理地包含在硬盘驱动器中。存储在这种数据库中的数据可以相对陈旧--甚至若干年旧。存储在这种数据库中的数据可能在之前的年份中产生并存储。因为它可能已积累了很长时间,因此存储在这种数据库中的数据的量会相对地大。映射缩减工具可以处理以分布式方式存储在数据库中的大型数据集。映射缩减工具可以创建映射(map)任务和缩减(reduce)任务。这些任务可以以分布式的方式执行。大型数据集的处理可以被分解成单独的方面,并且对每个方面的处理可以分布在单独的处理元件中。映射缩减工具可以以面向批次的方式执行其处理,使得它相对于大型数据集执行的批作业既有开始又有结束。
[0046]映射缩减工具可以以与由连续事件处理器同时执行的处理分离的方式执行其处理。虽然映射缩减工具以具有明确的任务开始和结束的面向批次的方式执行其处理,但是连续事件处理器连续地执行其处理,而没有结束。事件流中的事件连续地到达连续事件处理器。本发明的实施例可以把连续事件处理器的连
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1