1. 自定义窗口分配器(flink1.11.2)
![复制代码](https://i-blog.csdnimg.cn/blog_migrate/9fafc5631ba1215db74dcb775c5144aa.png)
package com.atguigu.exercise.ETL.caiutil
import java.text.SimpleDateFormat
import java.util
import java.util.{Collections, Date}
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.WindowAssigner
import org.apache.flink.streaming.api.windowing.triggers.{EventTimeTrigger, Trigger}
import org.apache.flink.streaming.api.windowing.windows.TimeWindow
class CustomWindowAssigner[T] extends WindowAssigner[T, TimeWindow]{
override def assignWindows(t: T, timestamp: Long, windowAssignerContext: WindowAssigner.WindowAssignerContext): util.Collection[TimeWindow] = {
var offset: (Long, Long) = null
offset = g