数据流上有状态的计算
对接处理Kafka的前端打点数据,写入到Doris
1.dwd 明细用户每天听课的打点数据(这里会对1分钟内的多个点数据进行去重,保证每分钟只会有一条记录)
2.dws 汇总用户每天每个课程下的累计听课时长
3.dwt 汇总用户在每一个课程下的总时长
1.获取上下文执行环境env
配置执行环境参数:
1.设置使用数据产生的时间:EventTime
2.设置全局并行度为4
3.根据 env 得到 table_env
2.得到Table 执行环境 table_env
配置t_env环境参数
为t_env注册自定义函数
3.使用table的方式注册 Kafka Source,同时注册结果数据的Sink 表
4.编写从Source到Sink的逻辑处理SQL语句
5.调用t_env.execute_sql(SQL逻辑语句)
时间语义:处理时间 事件时间 到达FLink程序的时间
时间:EventTime(性能时效性稍差,可以解决乱序) ProcessTime 到达FLink程序的时间
Window:无界流划分为有界流
1.根据是否keyby :
不带key的:调用windowAll划分窗口
带key的: 调用window划分窗口
2.划分之后可以作用上窗口函数:
增量类型:来一条处理一条 reduce agg
全量类型:比如求某个窗口的最大值 process ProcessWindowFunction<IN, OUT, KEY, W extends Window>[可以得到窗口的开始时间 结束时间等]
WindowFunction :对于整个窗口作用上一个函数,对其数据进行处理:
增量:一个窗口内