当前位置: 首页 > 知识库问答 >
问题:

未调用apache flink事件时间处理窗口processfunction

施阳曜
2023-03-14

窗口正在进行无限循环或其他操作,我正在处理后打印数据流,但看起来根本没有达到那个点。

下面是我的伪代码。

Datastream env = StreamExecutionEnvironment.getExecutionEnvironment()    
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

Datastream stream = env.addSource() .map(mapping to java object) 
    .filter(filter for specific type of events) 
    .assignTimestampsAndWatermarks(
         new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(2)){})

Datastream processedStream = stream .keyBy(...)  
    .window(TumblingEventTimeWindows.of(Time.seconds(10))) .reduce()

processedStream.print()

我在reduce函数中添加了要打印的日志。正在从reduce函数打印日志。但是这条流没有被打印出来。

并且流源数据是历史数据,即。。超过2个月的旧数据。如果是历史数据流,还需要专门设置其他内容吗?

任何输入都会大有裨益。。

共有1个答案

楚威
2023-03-14

您可以使用Flink web UI来检查水印,以查看当前水印是否足够高级,从而触发窗口。有关水印的更多信息,请参阅flink培训网站。

 类似资料:
  • 我的工作是做以下事情: 根据事件时间使用Kafka主题中的事件 计算7天的窗口大小,以1天的幻灯片显示 将结果放入Redis 我有几个问题: 如果它从最近的记录中消耗Kafka事件,在作业存活1天后,作业关闭窗口并计算7天窗口。问题是作业只有1天的数据,因此结果是错误的。 如果我尝试让它从7天前的时间戳中消耗Kafka事件,当作业开始时,它从第一天开始计算整个窗口,并且花费了很多时间。另外,我只想

  • null 此窗口具有一个允许延迟为一分钟的BoundedOutoFordernesTimeStampExtractor。 水印:据我的理解,Flink和Spark结构化流中的水印定义为(max-event-timestamp-seen-so-far-alloged-lateness)。事件时间戳小于或等于此水印的任何事件都将被丢弃并在结果计算中忽略。 在此场景中,几个事件到达Flink运算符时具有

  • 在中,元素被分配给一个或多个实例。在滑动事件时间窗口的情况下,这发生在1中。 如果窗口的和,则将时间戳为0的元素分配到以下窗口: 窗口(开始=0,结束=5) 窗口(开始=-1,结束=4) 窗口(开始=-2,结束=3) 窗口(开始=-3,结束=2) 窗口(开始=-4,结束=1) 在一幅图片中: 有没有办法告诉Flink时间有开始,而在那之前,没有窗户?如果没有,从哪里开始寻求改变?在上述情况下,Fl

  • 我很难让apache beam管道触发基于事件时间的触发器,但似乎能够随着处理时间触发窗口触发。 我的管道相当基本: > 我提取二级时间戳 我打开数据窗口进行处理 我按秒对数据进行分组,以便以后按秒对流数据进行分类。 我最终在分类的秒数上使用滑动窗口,有条件地每秒向pubsub发出两条消息中的一条。 我的问题似乎在步骤3中。 我试图在第3阶段使用与第5阶段相同的窗口策略,在分类秒数上运行滑动平均计

  • 我的程序的一部分通过网络连接接收输入,然后发回一条消息。我想限制某个输入触发消息的次数,这样程序就不会过载。 我有一个后台工作程序等待输入,然后当它收到特定的输入时,它调用一个静态类,该类将确定自上次输入以来是否有足够的时间。我用的是一个 这样做。看起来是这样的(所有内容都是公共的,所以我可以调试): 问题是,Time_Tick方法永远不会从计时器调用。我可以使用Invoke()来触发这样的方法,

  • 我正在运行一个简单的示例来测试基于EventTime的Windows。我能够生成带有处理时间的输出,但当我使用EventTime时,没有输出。请帮助我明白我做错了什么。