gpt4 book ai didi

java - 在 Apache Flink 中按元组字段中的 max 进行过滤

转载 作者:行者123 更新时间:2023-12-01 16:14:18 25 4
gpt4 key购买 nike

我正在使用 Apache Flink Streaming API 来处理数据文件,并且我只想从最后一个窗口获取结果。有没有办法做到这一点?如果不可能,我想我可以过滤结果元组中第一个字段的最大值(Long 值)。

SingleOutputStreamOperator<Tuple12<Long, String, String, Integer, String, Integer, String, Integer, String, Integer, String, Integer>> top5SlidingEventTimeWindowsFiltered = top5SlidingEventTimeWindows.filter(new FilterFunction<Tuple12<Long,String,String,Integer,String,Integer,String,Integer,String,Integer,String,Integer>>() {

public boolean filter(
Tuple12<Long, String, String, Integer, String, Integer, String, Integer, String, Integer, String, Integer> value)
throws Exception {


}
});

在上面的过滤转换中,它将按元组第一个字段的最大值进行过滤。有可能以某种方式做到这一点吗?

最佳答案

使用 DataStream API,当您使用来自有限源(如文件)的数据时,当源到达其输入末尾时,它会发送一个值为 MAX_WATERMARK 的水印。您可以使用它来检测工作是否已完成。

因此,在像您这样的情况下,您可以在窗口后面放置一个 ProcessFunction ,并让它持续存储迄今为止收到的最新结果。为 MAX_WATERMARK 设置一个计时器,当它到达时,使用当时的状态来产生所需的结果。

这必须是一个KeyedProcessFunction,否则您将无法使用计时器。如果流没有设置键控,那么您无论如何都必须设置键控——您可以简单地通过一个常量设置键控,假设您不介意并行度为 1。

关于java - 在 Apache Flink 中按元组字段中的 max 进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62445573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com