千家信息网

Flink中如何使用TimeWindowAll

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍了Flink中如何使用TimeWindowAll,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。timeWindowAl
千家信息网最后更新 2025年12月02日Flink中如何使用TimeWindowAll

这篇文章主要介绍了Flink中如何使用TimeWindowAll,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

timeWindowAll时间滚动窗口(不分区时间滚动窗口【滑动窗口与滚动窗口的区别,在于滑动窗口会有数据元素重叠可能,而滚动窗口不存在元素重叠】)

示例环境

java.version: 1.8.xflink.version: 1.11.1

Flink 系例 之 搭建开发环境与数据

TimeWindowAll.java

import com.flink.examples.DataSource;import org.apache.flink.api.java.tuple.Tuple3;import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import org.apache.flink.streaming.api.functions.source.RichSourceFunction;import org.apache.flink.streaming.api.windowing.time.Time;import java.util.List;/** * @Description 不分区时间滚动窗口 */public class TimeWindowAll {    /*    窗口在处理流数据时,通常会对流进行分区;    数据流划分为:    keyed(根据key划分不同数据流区)    non-keyed(指没有按key划分的数据流区,指所有原始数据流)    */    /**     * 遍历集合,返回指定时间滚动窗口下最大年龄数据记录     * @param args     * @throws Exception     */    public static void main(String[] args) throws Exception {        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();        //env.setParallelism(1);        DataStream> inStream = env.addSource(new MyRichSourceFunction());        DataStream> dataStream = inStream                //按时间窗口滚动,对前6秒内的输入数据流,计算一次                .timeWindowAll(Time.seconds(6))                //注意:计算变量为f2                .maxBy(2);        dataStream.print();        env.execute("flink TimeWindow job");    }    /**     * 模拟数据持续输出     */    public static class MyRichSourceFunction extends RichSourceFunction> {        @Override        public void run(SourceContext> ctx) throws Exception {            List> tuple3List = DataSource.getTuple3ToList();            for (Tuple3 tuple3 : tuple3List){                ctx.collect(tuple3);                //1秒钟输出一个                Thread.sleep(1 * 1000);            }        }        @Override        public void cancel() {            try{                super.close();            }catch (Exception e){                e.printStackTrace();            }        }    }}

打印结果

2> (王五,man,29)

感谢你能够认真阅读完这篇文章,希望小编分享的"Flink中如何使用TimeWindowAll"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0