1

问题#1:我正在处理一个案例场景,我们需要融合来自多个传感器[例如 8 个传感器]的数据并将它们以树的形式连接起来。例如,加入 [s1,s2,s3 s4] 形成流 A,然后加入 [s5,s6,s7 和 s8] 形成流 B,然后对流 A 和 B 执行 CEP。我该如何实现?

问题#2:是否可以在多个流上执行 CEP,意味着不止一个流?在 flink 1.3.2 API中明确提到模式将应用于一个流

DataStream<Event> input = ...
Pattern<Event, ?> pattern = ...

PatternStream<Event> patternStream = CEP.pattern(input, pattern);

如果 Pattern 不能应用于多个流,那么 Flink CEP 将如何与 CEP 的经典示例一起工作,该示例涉及烟雾流温度流,以在发生火灾时创建警报。

  • 根据时间戳等键加入烟雾和临时流是唯一的解决方案吗?

  • 那么如何将 Flink 应用到涉及多个传感器的 IOT 的广泛用例中呢?

4

1 回答 1

1

这取决于您如何从传感器读取数据,如果数据到达不同的 kafka 主题,您可以创建 2 个 flink 作业。

作业 1 - 从传感器主题 s1、s2、s3、s4 读取并创建流 A,然后另一个 kafkaconsumer 从 s5、s6、s7、s8 读取并创建流 B。然后您将来自这 2 个流的数据推送到 2 个中间主题-> 流A,流B

作业 2 - 现在作业 2 从 kafka 主题 streamA 和 streamB 一起读取并创建单个数据流。

请记住,当您执行此操作时,您应该依靠传感器数据的事件时间而不是摄取时间或处理时间来获得准确的结果。

加入 2 个流后,运行 CEP 并不难,正如您从上一个问题中看到的那样 - Process multiple streams in Flink CEP

于 2017-10-30T09:18:33.470 回答