问题#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如何应用于涉及多个传感器的物联网的广泛用例?
答案 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