Apache flink Apache Flink:流窗口触发器,java.lang.StackOverflowException

Apache flink Apache Flink:流窗口触发器,java.lang.StackOverflowException,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我正在尝试将ContinuousTimeEventTrigger与时间窗口一起使用: val timed\u stamped\u stream=likes\u stream.map({ p=>{ val x=p.split(“,”) (获取时间戳(x(0)),x(1).trim.toLong,x(2).trim.toLong) }}).assignTimestamps(新的TimestampExtractor[(Long,Long,Long)]{ 覆盖def getCurrentWatermar

我正在尝试将ContinuousTimeEventTrigger与时间窗口一起使用:

val timed\u stamped\u stream=likes\u stream.map({
p=>{
val x=p.split(“,”)
(获取时间戳(x(0)),x(1).trim.toLong,x(2).trim.toLong)
}}).assignTimestamps(新的TimestampExtractor[(Long,Long,Long)]{
覆盖def getCurrentWatermark:Long=Long.MinValue
覆盖def提取水印(t:(长,长,长),l:Long):长=t.\u 1
覆盖时间戳(t:(长,长,长),l:长):长=t._1
}).keyBy(2).时间窗口(时间(5,时间单位秒))
timed_stamped_stream.trigger(ContinuousEventTimeTrigger.of(Time.of(5,TimeUnit.SECONDS))).sum(1.print()
但在flink流媒体集群上执行时,我得到了一个java.lang.StackOverflowerError,其stackTrace如下:

java.lang.StackOverflowError
at java.util.HashMap.putVal(HashMap.java:628)
at java.util.HashMap.put(HashMap.java:611)
at java.util.HashSet.add(HashSet.java:219)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.registerEventTimeTimer(WindowOperator.java:532)
at org.apache.flink.streaming.api.windowing.triggers.ContinuousEventTimeTrigger.onEventTime(ContinuousEventTimeTrigger.java:61)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.onEventTime(WindowOperator.java:558)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.onEventTime(WindowOperator.java:562)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.onEventTime(WindowOperator.java:562)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.onEventTime(WindowOperator.java:562)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.onEventTime(WindowOperator.java:562)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.onEventTime(WindowOperator.java:562)
at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.onEventTime(WindowOperator.java:562)

有谁能帮忙吗?

你为什么要使用ContinuouseVentTimeRigger?在您的情况下,您应该只指定timeWindow(…),这将有一个适当的默认触发器。我试图重现您的问题,但没有成功。你可以发布一个示例输入数据来重现这个问题吗。您使用的是哪个版本的Flink?我尝试做的是这样的:有一个元组流以文件流的形式出现。每个元组都有一个时间戳。我想在5秒内批处理元组。每个批次都必须以5秒的间隔定期处理。我使用的是Flink 0.10.1我看到的一件事是,您正在为每个元素生成一个水印,这可能会导致并发计算很多事件时间触发器。尝试用“AscendingTimestampExtractor”替换您自己的“TimestampExtractor”。