加入Flink& amp;将CEP应用于超过2个流而不加入它们

时间:2017-10-29 11:51:03

标签: apache-flink flink-streaming flink-cep

问题#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);

如果模式无法应用于多个流,那么Flink CEP将如何使用CEP的典型示例,其中包含烟雾流温度流来创建当开火时发出警报。

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

  • 那么Flink如何应用于涉及多个传感器的物联网的广泛用例?

1 个答案:

答案 0 :(得分:1)

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

作业1 - 从传感器主题s1,s2,s3,s4读取并创建流A,然后另一个kafkaconsumer从s5,s6,s7,s8读取并创建流B.然后从这两个流中推送数据2个中间主题 - &gt; streamA,streamB

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

  

请记住,当你这样做时,你应该依赖于事件时间   您的传感器数据,而不是摄取时间或处理时间   获得准确的结果。

加入2个流后,运行CEP并不是很困难,因为您可以从上一个问题中看到 - Process multiple streams in Flink CEP