火花和事件相关性

时间:2016-02-07 18:05:03

标签: events apache-spark spark-streaming complex-event-processing

我目前正在研究Spark是否有助于提高系统中组件的可伸缩性和故障转移率,但我并不习惯这个库的概念。

我必须解决的一个简单用例:

  1. 我接收事件(通过各种端点,比如 系统记录/ RELP /数据库..)
  2. 如果一个事件是"在语义上相同"对于旧事件,在时间窗口(从1h到24h),然后新事件应该与旧事件相关联,旧事件的数据应该更新(一些严重性,原因等)
  3. 然后将事件发送到ElasticSearch集群
  4. 此系统的延迟应该很低:如果我收到一个事件,它应该在不到X秒的时间内在数据库中。而且,评估"语义的规则"可以在不停止事件流的情况下更新事件。

    目前,我使用一个简单的策略:事件只是存储在内存中(通过hazelcast),但只有一个节点可以关联它们之间的事件。它不具备容错能力。

    看起来加入流可以帮助这种事情,但我湖混凝土的例子......

    Spark可以处理这个用例,同时可以扩展和扩展。容错?我正在寻找关于流相关的一些指针,同时使用Spark(doc?example?)

    进行容错

    谢谢!

2 个答案:

答案 0 :(得分:1)

我假设你想使用Spark Streaming。

在Spark中执行此操作的一种可能性可能是使用updateStateByKey函数引入状态,这意味着实际实现状态。 您可以在官方文档中找到说明,这里是example

另一种可能性是使用Spark Streaming中的内置窗口函数。再次查看官方文件。

答案 1 :(得分:0)

应该可以使用logstash和elasticsearch。在您的logstash配置中,您可以监控任何事件的唯一标识,并根据该标识对elasticsearch进行查询。它将在一次搜索中列出所有相关事件。