一种Spark平台中事件处理方法和装置与流程

文档序号:17130368发布日期:2019-03-16 01:07阅读:104来源:国知局
一种Spark平台中事件处理方法和装置与流程

本发明涉及数据处理的技术领域,尤其是涉及一种spark平台中事件处理方法和装置。



背景技术:

实时计算框架sparksteaming是sparkapi(applicationprogramminginterface,应用程序编程接口)的一个扩展。实时计算框架sparksteaming不能像流式处理框架storm一样事件来一条处理一条。实时计算框架sparkstreaming将流式计算分解成一系列短小的批处理作业,处理的引擎是sparkcore。sparkcore将实时计算框架sparkstreaming的输入数据按照批尺寸batchsize生成一个个离散数据流(dstream,discretizedstream)。

但是,在现有技术中,实时计算框架sparksteaming无法从离散数据流dstream中获得更多有价值的事件。获得更多有价值的事件是指找到离散数据流dstream中事件之间的关系,进而根据该关系推断新的数据。

随着大数据时代的到来,数据处理不仅仅是对数据进行简单的分析、存储等操作,从大量的数据流中提取更多有价值的数据显得尤为重要。



技术实现要素:

有鉴于此,本发明的目的在于提供一种spark平台中事件处理方法和装置,以缓解了现有的实时计算框架sparksteaming无法对数据流进行关联分析以从数据流中推断出新数据的技术问题。

第一方面,本发明实施例提供了一种spark平台中事件处理方法,应用于sparkstreaming节点,所述sparkstreaming节点中集成有关联引擎,包括:从消息队列中提取事件实体;将所述事件实体处理为结构化数据;将处理为结构化数据的事件实体发送至所述关联引擎;所述关联引擎将接收到的事件实体写入对应的事件类中,并根据关联规则对各事件类中的事件实体进行关联计算,输出复杂事件。

进一步地,所述关联引擎将接收到的事件实体写入对应的事件类中包括:在各事件类中查找与所述接收到的事件实体相对应的事件类;若查找到所述相对应的事件类,则将所述接收到的事件实体写入对应的事件类中;若未查找到所述相对应的事件类,则创建新的事件类,并将所述接收到的事件实体写入所述新的事件类中。

进一步地,将所述处理为结构化数据的事件实体发送至所述关联引擎时,该方法还包括:所述关联引擎按照第一预设规则对所述接收到的事件实体进行过滤,将过滤后的事件实体写入所述对应的事件类。

进一步地,该方法还包括:所述关联引擎将过滤后事件实体送入事件窗口。

进一步地,所述关联引擎根据关联规则对各事件类中的事件实体进行关联计算,输出复杂事件包括:所述关联引擎根据第二预设规则触发监听事件;所述监听事件为针对触发时刻对应的事件窗口中包含的事件实体根据关联规则进行关联计算,输出复杂事件。

第二方面,本发明实施例提供了一种spark平台中事件处理装置,设置于sparkstreaming节点,包括提取单元、数据转化单元、发送单元和关联引擎,其中:所述提取单元,用于从消息队列中提取事件实体;所述数据转化单元,用于将所述事件实体处理为结构化数据;所述发送单元,用于将处理为结构化数据的事件实体发送至所述关联引擎;所述关联引擎,用于将接收到的事件实体写入对应的事件类中,并根据关联规则对各事件类中的事件实体进行关联计算,输出复杂事件。

进一步地,所述关联引擎用于:在各事件类中查找与所述接收到的事件实体相对应的事件类;若查找到所述相对应的事件类,则将所述接收到的事件实体写入对应的事件类中;若未查找到所述相对应的事件类,则创建新的事件类,并将所述接收到的事件实体写入所述新的事件类中。

进一步地,所述关联引擎还用于:按照第一预设规则对所述接收到的事件实体进行过滤,将过滤后的事件实体写入所述对应的事件类。

进一步地,所述关联引擎还用于:将过滤后事件实体送入事件窗口。

进一步地,所述关联引擎还用于:根据第二预设规则触发监听事件;所述监听事件为针对触发时刻对应的事件窗口中包含的事件实体根据关联规则进行关联计算,输出复杂事件。

在本发明实施例中,首先从消息队列中提取事件实体,并将事件实体处理为结构化数据;并将处理为结构化数据的事件实体发送至关联引擎,以使关联引擎将接收到的事件实体写入对应的事件类中,并根据关联规则对各类事件类中的事件实体进行关联计算,输出复杂事件。通过上述处理,能够在实时计算框架sparksteaming中增加复杂事件的分析功能,从而使实时计算框架sparksteaming能够分析事件之间的关系,从而根据该关系推断出新的事件,进而缓解了现有的实时计算框架sparksteaming无法对数据流进行关联分析以从数据流中推断出新数据的技术问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的一种spark平台中事件处理方法的流程图;

图2是根据本发明实施例的一种spark平台中事件处理方的数据流程简图;

图3是根据本发明实施例的另一种spark平台中事件处理方的数据流程简图;

图4是根据本发明实施例的一种事件关联分析的流程示意图;

图5是根据本发明实施例的另一种事件关联分析的流程示意图;

图6是根据本发明实施例的一种spark平台中事件处理装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

根据本发明实施例,提供了一种spark平台中事件处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的一种spark平台中事件处理方法的流程图,该方法应用于sparkstreaming节点,sparkstreaming节点中集成有关联引擎,如图1所示,该方法包括如下步骤:

步骤s102,从消息队列中提取事件实体;

步骤s104,将所述事件实体处理为结构化数据;

步骤s106,将处理为结构化数据的事件实体发送至所述关联引擎;

步骤s108,所述关联引擎将接收到的事件实体写入对应的事件类中,并根据关联规则对各事件类中的事件实体进行关联计算,输出复杂事件。

在本发明实施例中,首先从消息队列中提取事件实体,并将事件实体处理为结构化数据;并将处理为结构化数据的事件实体发送至关联引擎,以使关联引擎将接收到的事件实体写入对应的事件类中,并根据关联规则对各类事件类中的事件实体进行关联计算,输出复杂事件。通过上述处理,能够在实时计算框架sparksteaming中增加复杂事件的分析功能,从而使实时计算框架sparksteaming能够分析事件之间的关系,从而根据该关系推断出新的事件,进而缓解了现有的实时计算框架sparksteaming无法对数据流进行关联分析以从数据流中推断出新数据的技术问题。

在如图2所示的数据流程简图中,数据采集的探针beats用于从日志中提取日志数据,并将日志数据存储在kafka消息队列中,得到一条消息。在本实施例中,可以基于数据的采集时间将日志数据存储在kafka消息队列中。如图3所示,kafka消息队列包括多个主题topic,其中,多个主题topic用于存储上述日志数据。在将上述日志数据存储在kafka消息队列之后,sparkstreaming节点(即图2中的spark计算节点1至spark计算节点n)从kafka消息队列中提取消息,进行处理后得到事件实体,该事件实体为一行文本数据,通常该文本数据为结构化文本。

在本实施例中,在提取到事件实体之后,可以利用spark平台的弹性分布式数据集(resilientdistributeddatasets,rdd)对事件实体进行结构化处理,得到处理为结构化数据rawdata(二维表的行数据)的事件实体。

弹性分布式数据集rdd中定义了事件实体的结构化处理规则,sparkstreaming节点在从kafka消息队列中提取到事件实体之后,就可以通过sparkstreaming节点中的rdd按照结构化处理规则对事件实体进行结构化处理,得到处理为结构化数据的事件实体。

在得到处理为结构化数据的事件实体之后,就可以将处理为结构化数据的事件实体发送至关联引擎中。该关联引擎在获取到该事件实体之后,就可以将接收到的事件实体写入对应的事件类中。并根据关联规则对各类事件类中的事件实体进行关联计算,输出复杂事件。

需要说明的是,在本实施例中,可以根据实际应用场景的不同设置不同的关联规则,本实施例不做具体限定。

在一个可选的实施方式中,所述关联引擎将所述接收到的事件实体写入对应的事件类中包括如下步骤:

在各事件类中查找与所述接收到的事件实体相对应的事件类。

若查找到所述相对应的事件类,则将所述接收到的事件实体写入对应的事件类中。

若未查找到所述相对应的事件类,则创建新的事件类,并将所述接收到的事件实体写入所述新的事件类中。

具体地,在本实施例中,关联引擎可以在关联引擎表中查找与该事件实体(关联引擎接收到的事件实体)相对应的事件类。其中,关联引擎表中包括多个事件类所对应的事件实体,每个事件类对应不同的关键字。

关联引擎可以在接收到事件实体之后,在各类事件类中查找与该事件实体对应的事件类。如果在关联引擎中查找到对应的事件类,则将该事件实体写入该对应的事件类中。如果在关联引擎中未查找到对应的事件类,则可以为该事件实体创建新的事件类,并将该事件实体写入新的事件类中。

也就是说,在本实施例中,可以设置在首次提取到某一类型的事件实体时,在sparkstreaming节点的关联引擎表中为该类型的注册对应的事件类。

在本实施例中,假设,针对任意一个类型,在提取所属于该类型的事件实体时。若检测到首次该类型的事件实体,那么在sparkstreaming节点的关联引擎表中为该类型注册对应的事件类。

例如,事件类型包括:“张三的上网时长”和“张三在一个小时内打开浏览的网页数量”。在提取用于统计“张三的上网时长”的事件实体时,若检测到首次提取该类事件实体,则在sparkstreaming节点的关联引擎表中为“张三的上网时长”注册对应的事件类。

在本实施例中,注册事件类是指在关联引擎表中创建事件实体,以通过该事件实体记录对应的事件实体。

需要说明的是,在本实施例中,事件类可以在获取到处理为结构化数据的事件实体之后进行创建;还可以在获取处理为结构化数据的事件实体之前,预先在关联引擎表中创建好,本实施例不做具体限定。

在本实施例中,在将所述处理为结构化数据的事件实体发送至所述关联引擎时,该方法还包括如下步骤:

关联引擎按照第一预设规则对接收到的事件实体进行过滤,将过滤后的事件实体写入对应的事件类。

在本实施例中,预先在关联引擎中设置过滤规则(即,第一预设规则),关联引擎在接收到事件实体之后,就可以按照第一预设规则,对接收到的事件实体进行过滤。过滤之后的事件实体就可以写入对应的事件类中。

需要说明的是,上述第一预设规则可以根据实际需要和具体应用场景来进行设定,本实施例不做具体限定。

在本实施例中,关联引擎在按照第一预设规则对接收到的事件实体进行过滤之后,还可以将过滤之后的事件实体送入事件窗口。其中,送入事件窗口内的事件实体用于进行关联计算。

在将处理为结构化数据后的事件实体记录在关联引擎表中对应的事件类中之后,关联引擎就可以根据关联规则对各类事件类中的事件实体进行关联计算,输出复杂事件。

可选地,关联引擎根据关联规则对各事件类中的事件实体进行关联计算,输出复杂事件包括:

关联引擎根据第二预设规则触发监听事件;

其中,监听事件为针对触发时刻对应的事件窗口中包含的事件实体根据关联规则进行关联计算,输出复杂事件。

在本实施例中,第二预设规则可以为每隔预设时间段,监听事件被触发;还可以设置为其他的触发规则,本实施例不做具体限定,具体可以根据实际需要和具体应用场景来进行设定。当监听事件被触发时,在监听事件的触发时刻,对相应的事件窗口内的事件实体进行关联计算,从而输出复杂事件。

可选地,在本实施例中,事件窗口可以选择为滑动时间窗口。如图4和图5所示的附图中,该事件窗口即为滑动时间窗口。在如图4所示的附图中,滑动时间窗口的大小为3秒,且每隔一秒执行一次监听事件。在如图5所示的附图中,滑动时间窗口的大小为3秒,且每隔3秒执行一次监听事件。

在本实施例中,在监听事件被触发的触发时刻,可以对相应的滑动时间窗口内的事件实体进行关联计算,若关联计算结果满足关联规则,则输出复杂事件。若不满足关联规则,则不输出复杂事件。并在下一个触发时刻到来时,对下一个触发时刻所对应的滑动时间窗口内的事件实体进行关联计算。

下面结合图4对事件流处理和相关性分析的具体过程进行详细介绍。在本实施例中,可以预先设定用于进行关联计算的事件实体的过滤规则(即,上述第一预设规则),具体可以根据实际需要来进行设定,图4所设定的过滤规则为w大于100。

如图4所示,在t=0的时刻,无任何数据,可以创建一个初始的滑动时间窗口。在t+1时刻,输入事件w1,并记录该事件w1;在t+2时刻的滑动时间窗口,由于第三秒还未发生,窗口不满足3秒的窗口长度要求,因此t+2时刻的滑动时间窗口不往下移动。在t+3时刻的滑动时间窗口,由于窗口刚好满足3秒的窗口长度要求,因此t+3时刻的滑动时间窗口不往下移动。从t+4时刻开始,滑动时间窗口的窗口长度满足要求,则t+4时刻的滑动时间窗口向下移动预设步长(例如,1秒)。

如图4所示,在t+1时刻所对应滑动时间窗口内,在t+1时刻,进入事件w1。在t+3时刻所对应滑动时间窗口内,在t+3时刻,进入事件w3。在t+6时刻所对应滑动时间窗口内,在t+5时刻,进入事件w6。

如图4所示,每隔1秒触发一次监听事件。那么在t+1时刻,可以基于关联规则对其滑动时间窗口内的事件实体w1进行关联计算。在t+2时刻,可以基于关联规则对其滑动时间窗口内的事件实体w1进行关联计算。在t+3时刻,可以基于关联规则对其滑动时间窗口内的事件实体w1和事件实体w3进行关联计算。其余滑动时间窗口的关联计算以此类推,此处不再详细赘述。

下面结合图5对事件流处理和相关性分析的具体过程进行详细介绍。在图4的基础上,如图5所示,滑动时间窗口的大小为3秒,且每隔三秒执行一次监听事件。

如图5所示,在t+1时刻所对应滑动时间窗口内,在t+1时刻,进入事件w1。在t+3时刻所对应滑动时间窗口内,在t+3时刻,进入事件w3。在t+6时刻所对应滑动时间窗口内,在t+5时刻,进入事件w6。

如图5所示,在t+3时刻,可以基于关联规则对事件实体w1和事件实体w3进行关联计算。在t+6时刻,可以基于关联规则对事件实体w6进行关联计算。

也就是说,如图5所示,在t+1时刻,事件实体w1发生并送入滑动时间窗口,此时不会触发监听事件。

在t+3时,事件实体w3发生并送入滑动时间窗口,此时满足了第二预设规则,触发监听事件,此时输出事件实体为w1和w3。进而,基于关联规则对事件实体w1和事件实体w3进行关联计算,并输出复杂事件。

在t+4和t+5时刻,无事件发生并送入滑动时间窗口。

在t+6时刻,事件实体w6发生并送入滑动时间窗口,此时满足了第二预设规则,触发监听事件,此时输出事件实体w6。进而,基于关联规则对事件实体w6进行关联计算,并输出复杂事件。

实施例二:

本发明实施例还提供了一种spark平台中事件处理装置,该spark平台中事件处理装置主要用于执行本发明实施例上述内容所提供的spark平台中事件处理方法,以下对本发明实施例提供的spark平台中事件处理装置做具体介绍。

图6是根据本发明实施例的一种spark平台中事件处理装置的示意图,如图6所示,该spark平台中事件处理装置主要包括提取单元10,数据转化单元20,发送单元30和关联引擎40,其中:

提取单元10,用于从消息队列中提取事件实体;

数据转化单元20,用于将所述事件实体处理为结构化数据;

发送单元30,用于将处理为结构化数据的事件实体发送至所述关联引擎;

关联引擎40,用于将接收到的事件实体写入对应的事件类中,并根据关联规则对各事件类中的事件实体进行关联计算,输出复杂事件。

在本发明实施例中,首先从消息队列中提取事件实体,并将事件实体处理为结构化数据;并将处理为结构化数据的事件实体发送至关联引擎,以使关联引擎将接收到的事件实体写入对应的事件类中,并根据关联规则对各类事件类中的事件实体进行关联计算,输出复杂事件。通过上述处理,能够在实时计算框架sparksteaming中增加复杂事件的分析功能,从而使实时计算框架sparksteaming能够分析事件之间的关系,从而根据该关系推断出新的事件,进而缓解了现有的实时计算框架sparksteaming无法对数据流进行关联分析以从数据流中推断出新数据的技术问题。

可选地,所述关联引擎40用于:在各事件类中查找与所述接收到的事件实体相对应的事件类;若查找到所述相对应的事件类,则将所述接收到的事件实体写入对应的事件类中;若未查找到所述相对应的事件类,则创建新的事件类,并将所述接收到的事件实体写入所述新的事件类中。

可选地,所述关联引擎40还用于:按照第一预设规则对所述接收到的事件实体进行过滤,将过滤后的事件实体写入所述对应的事件类。

可选地,所述关联引擎40还用于:将过滤后事件实体送入事件窗口。

可选地,所述关联引擎40还用于:根据第二预设规则触发监听事件;所述监听事件为针对触发时刻对应的事件窗口中包含的事件实体根据关联规则进行关联计算,输出复杂事件。

本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1