cep java_java-Flink CEP不是在事件时间 job ,而是在处理时间 job

我也有同样的问题,我刚刚“解决”了它,但答案没有多大意义(至少对我来说),你会看到的。

说明:

在我最初的代码中,我有这样的代码:

var env = StreamExecutionEnvironment.getExecutionEnvironment

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

env.setParallelism(1)

env.getConfig.setAutoWatermarkInterval(1)

...

var stream : DataStream[String] = env.readTextFile("/home/luca/Desktop/input")

var tupleStream = stream.map(new S2TMapFunction())

tupleStream.assignTimestampsAndWatermarks(new PlacasPunctualTimestampAssigner())

val pattern = Pattern.begin(String,Double,Double,String,Int,Int).where(new SameRegionFunction())

val patternStream = CEP.pattern(newTupleStream,pattern)

val result = patternStream.process(new MyPatternProcessFunction())

root据我的日志记录,我看到SameRegionFunction和MyPatternProcessFunction都没有被执行,至少可以说,这是非常意外的。

回答:

因为我很笨,所以我决定 test让流通过另外一个 transformation函数,只是为了检查我的事件是否真的被插入到流中。因此,我将tupleStream提交给map操作,生成newUppleStream,如下所示:

var env = StreamExecutionEnvironment.getExecutionEnvironment

env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

env.setParallelism(1)

env.getConfig.setAutoWatermarkInterval(1)

...

var stream : DataStream[String] = env.readTextFile("/home/luca/Desktop/input")

/* I created 'DoNothingMapFunction', where the output event = input event*/

var tupleStream = stream.map(new S2TMapFunction())

var newTupleStream = tupleStream.assignTimestampsAndWatermarks(new PlacasPunctualTimestampAssigner()).map(new DoNothingMapFunction())

val pattern = Pattern.begin(String,Double,Double,String,Int,Int).where(new SameRegionFunction())

val patternStream = CEP.pattern(newTupleStream,pattern)

val result = patternStream.process(new MyPatternProcessFunction())

然后SameRegionFunction和MyPatternProcessFunction决定运行。

组织分解结构:

我改了线:

var newTupleStream = tupleStream.assignTimestampsAndWatermarks(new PlacasPunctualTimestampAssigner()).map(new DoNothingMapFunction())

为此:

var newTupleStream = tupleStream.assignTimestampsAndWatermarks(new PlacasPunctualTimestampAssigner())

它也起作用了。显然,仅仅是另一个层次的间接寻址就足以使其 job ,尽管我不清楚为什么会发生这种情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值