Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 监视一系列事件一段时间,然后做出决定_Java_Apache Flink_Complex Event Processing - Fatal编程技术网

Java 监视一系列事件一段时间,然后做出决定

Java 监视一系列事件一段时间,然后做出决定,java,apache-flink,complex-event-processing,Java,Apache Flink,Complex Event Processing,我是个新手 无论我看到什么教程,都将重点放在具有动态数据的非常简单的逻辑上如x秒内温度>100等 How do I bring in a a logic like this 1. When the temperature is 90 deg for 10 consecutive records 2. When the temperature for the last 10 minutes is < 90 如何引入这样的逻辑 1.当温度为90℃时,连续记录10次 2.当最后10分钟的温度

我是个新手

无论我看到什么教程,都将重点放在具有动态数据的非常简单的逻辑上如x秒内温度>100等

How do I bring in a a logic like this 
1. When the temperature is 90 deg for 10 consecutive records
2. When the temperature for the last 10 minutes is < 90
如何引入这样的逻辑
1.当温度为90℃时,连续记录10次
2.当最后10分钟的温度<90
一个棘手的问题,apache flink是否支持这种模式


我可以在x秒内看到
,但没有什么能像
在x分钟内/在x记录上那样
,你当然可以用Flink解决这样的用例

我将在下面用Flink的窗口操作符勾勒出一些解决方案。请注意,使用自定义函数/运算符也有其他方法可以实现这一点,它们可以提供更低的延迟和更少的状态来处理,但需要更多的用户定义代码

  • 当温度为90°时,连续记录10次:
  • 这可以使用一个滑动窗口来完成,该窗口收集十条记录,并按一条记录收集幻灯片。您应该将窗口函数实现为一个reduce函数,该函数立即将窗口记录合并为一个布尔值,该布尔值对所有温度是否大于90度进行编码。这将把空间需求减少到每个窗口一条记录,即一次10条记录(因为同时计算10个窗口)。请注意,计数窗口可能会有问题,因为在分布式流处理器中,排序有点难以推理

  • 当温度在过去10分钟内超过90度时:
  • 这可以通过滑动时间窗口来实现,例如,超过10分钟的时间窗口可以滑动一分钟。这将为您提供1分钟的分辨率,即,它将每分钟检查最后10分钟的温度。同样,每个窗口都有一条记录(10分钟/1分钟窗口每次记录10条,10分钟/30秒窗口每次记录20条,…)。另一个逻辑与上述计数方法相同。如果使用事件时间逻辑,则可以控制带有无序时间戳的记录

    根据您的用例,窗口方法可能就足够了。如果您需要更好的延迟或具有更好的性能,您还可以在有状态的
    FlatMapFunction
    (最后10条记录)或有状态的
    ProcessFunction
    中实现您的用例,这使您能够访问时间戳和水印,以实现更好的时间控制


    Flink的CEP库可以检测到更复杂的模式。

    这确实是一个很好的开始。谢谢你的指点。顺便说一句,你是如何进入那篇文章的。我看到它在这里。我如何进入这篇文章。因为“窗口”这个词是关键,如果我有,我会马上用谷歌搜索它!