烟台互网站建设公司名单,图片类网站开发需求,小说阅读网站系统模板下载,wordpress api 自定义认证背景
我们知道处理常用的滑动窗口分配器#xff0c;滚动窗口分配器#xff0c;全局窗口分配器#xff0c;会话窗口分配器外#xff0c;我们可以实现自己的自定义窗口分配器#xff0c;以实现我们的自己的窗口逻辑
自定义窗口分配器的实现
package wikiedits.assigner;i…背景
我们知道处理常用的滑动窗口分配器滚动窗口分配器全局窗口分配器会话窗口分配器外我们可以实现自己的自定义窗口分配器以实现我们的自己的窗口逻辑
自定义窗口分配器的实现
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 IntervalWindowAssignerextends WindowAssignerObject, TimeWindow {private static final long serialVersionUID 1L;private long windowSize 60 * 1000L;private IntervalWindowAssigner() {}Overridepublic CollectionTimeWindow assignWindows(Object element, long timestamp, WindowAssignerContext context) {long startTime timestamp - (timestamp % windowSize);long endTime startTime windowSize;return Lists.newArrayList(new TimeWindow(startTime, endTime));}Overridepublic TriggerObject, TimeWindow getDefaultTrigger(StreamExecutionEnvironment env) {return EventTimeTrigger.create();}Override public TypeSerializerTimeWindow getWindowSerializer(ExecutionConfig executionConfig) {return new TimeWindow.Serializer();}Override public boolean isEventTime() {return true;}
}
注意TimeWindow时间窗口是左边右开的形式参见下图所示 代码里面是以maxTimeStamp()为准的