微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flink CEP:FollowedBy模式:同一事件多次循环模式

如何解决Flink CEP:FollowedBy模式:同一事件多次循环模式

我是Flink CEP的新手,并且一直在研究模式以更好地理解它们。 我有一个“ begin”和“ bysbyBy”的简单案例。 我注意到,在followedBy的情况下,同一事件多次循环遍历它。 我在这里想念什么?

模式match_win = Pattern.begin(“ first”)。where(new SimpleCondition(){

    public boolean filter(HitDTO hitDTO) throws Exception {
        boolean result = false;
        if (hitDTO.getHitscore() == 4)
        {
            System.out.println("First:" + hitDTO + ": " + hitDTO.getHitscore());
            result = true;
        }
        return result;
    }
}).followedBy("next").where(new SimpleCondition<HitDTO>(){

    public boolean filter(HitDTO hitDTO) throws Exception
    {
        boolean result = false;

        if (hitDTO.getHitscore() == 6)
        {
            System.out.println("Next:" + hitDTO+ ": " + hitDTO.getHitscore());
            result = true;
        }
        return result;
    }
});

我正在传递4,4,6

并行度设置为1。

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment()。setParallelism(1);

但是,这是我在模式中打印输出的日志中看到的内容,其中6次仅传递一次就循环了4次。

首先:com.rs.dto.HitDTO@17619295:4

首先:com.rs.dto.HitDTO@c108f70:4

Next:com.rs.dto.HitDTO@5d13aab8:6

Next:com.rs.dto.HitDTO@5d13aab8:6

Next:com.rs.dto.HitDTO@5d13aab8:6

Next:com.rs.dto.HitDTO@5d13aab8:6

只是想知道为什么同一事件多次循环,但结果是正确的。

感谢您的回答。

解决方法

正常情况下,尝试将模式与输入序列进行匹配的过程将涉及对模式的各个组成部分的多次评估。这就是模式匹配的工作方式:将模式编译为有限状态机,并考虑输入可能通过FSM的所有可能路径,寻找导致终端匹配状态的路径。如果您不小心定义模式,则可能会导致组合工作量激增。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。