flink自定义窗口分配器

背景

我们知道处理常用的滑动窗口分配器,滚动窗口分配器,全局窗口分配器,会话窗口分配器外,我们可以实现自己的自定义窗口分配器,以实现我们的自己的窗口逻辑

自定义窗口分配器的实现

java 复制代码
package wikiedits.assigner;

import com.google.common.collect.Lists;
import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.typeutils.TypeSerializer;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.assigners.GlobalWindows;
import org.apache.flink.streaming.api.windowing.assigners.WindowAssigner;
import org.apache.flink.streaming.api.windowing.triggers.EventTimeTrigger;
import org.apache.flink.streaming.api.windowing.triggers.Trigger;
import org.apache.flink.streaming.api.windowing.windows.GlobalWindow;
import org.apache.flink.streaming.api.windowing.windows.TimeWindow;

import java.util.Collection;
import java.util.Collections;

public class IntervalWindowAssigner
        extends WindowAssigner<Object, TimeWindow> {
    private static final long serialVersionUID = 1L;
    private long windowSize = 60 * 1000L;

    private IntervalWindowAssigner() {}

    @Override
    public Collection<TimeWindow> assignWindows(
            Object element, long timestamp, WindowAssignerContext context) {

        long startTime = timestamp -  (timestamp % windowSize);
        long endTime = startTime + windowSize;

        return Lists.newArrayList(new TimeWindow(startTime, endTime));
    }

    @Override
    public Trigger<Object, TimeWindow> getDefaultTrigger(StreamExecutionEnvironment env) {
        return EventTimeTrigger.create();
    }

    @Override public TypeSerializer<TimeWindow> getWindowSerializer(ExecutionConfig executionConfig) {
        return new TimeWindow.Serializer();
    }

    @Override public boolean isEventTime() {
        return true;
    }
}

注意,TimeWindow时间窗口是左边右开的形式,参见下图所示

代码里面是以maxTimeStamp()为准的

相关推荐
雪兽软件13 小时前
“大数据”能提供什么帮助?
大数据
事变天下13 小时前
肾尚科技完成新一轮融资,加速慢性肾脏病(CKD)精准化管理闭环渗透
大数据·人工智能
大刘讲IT13 小时前
2025年企业级 AI Agent 标准化落地深度年度总结:从“对话”到“端到端价值闭环”的范式重构
大数据·人工智能·程序人生·ai·重构·制造
wang_yb13 小时前
掌握相关性分析:读懂数据间的“悄悄话”
大数据·databook
企业智能研究14 小时前
数据分析Agent白皮书:揭秘Data x AI的底层逻辑与未来关键
大数据·人工智能·数据分析
Elastic 中国社区官方博客14 小时前
Elasticsearch:你是说,用于混合搜索(hybrid search)
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
生信学习小达人14 小时前
群体遗传学之遗传漂变
大数据
凯禾瑞华养老实训室14 小时前
产教融合新抓手:智慧健康养老服务与管理实训室报价及人才培育路径
大数据·人工智能·物联网·ar·vr·智慧健康养老服务与管理
写代码的【黑咖啡】14 小时前
在大数据中如何做好数据质量监控
大数据
AI营销干货站15 小时前
原圈科技AI市场舆情分析平台多维度能力评估及市场表现解析
大数据·人工智能