Flink 窗口、Scala泛型通配符、Flink 窗口的底层 API、解析 json 格式的数据

1、Time Window

时间窗口

2、Session Window

会话窗口

如果一段时间没有数据生成一个窗口

3、Count Window

统计窗口

窗口的使用需要先分组,因为需要针对某一个key去划分窗口

Time Window

窗口的使用需要先 keyBy ,再去划分窗口

package com.shujia.flink.window

import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.api.windowing.assigners.{SlidingProcessingTimeWindows, TumblingEventTimeWindows, TumblingProcessingTimeWindows}
import org.apache.flink.streaming.api.windowing.time.Time

object Demo1TimeWindow {
  def main(args: Array[String]): Unit = {

    val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment

    val linesDS: DataStream[String] = env.socketTextStream("master", 8888)

    val kvDS: DataStream[(String, Int)] = linesDS.flatMap(_.split(",")).map((_, 1))

    /**
      * TumblingProcessingTimeWindows : 滚动(两个窗口没有交叉)的处理时间窗口
      * TumblingEventTimeWindows : 滚动的事件时间窗口,需要设置时间字段和水位线
      * SlidingProcessingTimeWindows : 滑动的处理时间窗口,滑动窗口需要指定窗口大小和滑动时间
      * SlidingEventTimeWindows : 滑动的事件时间窗口,需要设置时间字段和水位线
      */
      
    kvDS
      //窗口的使用需要先 keyBy ,再去划分窗口
      .keyBy(_._1)
      
      //需要传入一个时间的是滚动窗口,需要传入两个时间的是滑动窗口
      //.timeWindow(Time.seconds(5)) //处理时间的滚动窗口 -- 这样写是简写
      
      //完整写法:
      .window(SlidingProcessingTimeWindows.of(Time.seconds(15), Time.seconds(5)))
      .sum(1)
      .print()

    env.execute()

  }
}

Session Window

package com.shujia.flink.window

import org.apache.flink.streaming.api.TimeCharacteristic
import or
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值