IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Flink窗口的类型 -> 正文阅读

[大数据]Flink窗口的类型


一、简介

Flink在处理无界数据流时,也可以切分数据流来得到有限的数据集进行处理,即有界流。而windows,就是它的切分方式,它会把数据流分发到有限大小的bucket(桶)种进行分析。其中,可以分为两种window类型,即时间窗口计数窗口

window类型细分类型备注
时间窗口滚动时间窗口最简单的窗口类型,按照时间切分成一个一个的窗口
滑动时间窗口它会进行滑动,每次滑动的步长可以设定,窗口之间可以有重叠
会话窗口前后会话相隔一定的时间,则划分一个窗口
计数窗口滚动计数窗口达到一定数量就划分一个窗口
滑动计数窗口滑动进行统计,比如每隔一分钟统计过去24小时购买数据

二、代码

package com

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

object TumblingWindow {
    def main(args: Array[String]): Unit = {
        val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment

        // receive a text-stream
        val ds: DataStream[String] = env.socketTextStream("127.0.0.1", 9999)

        val result: DataStream[(String, Int)] = ds.flatMap(_.split(" "))
            .filter(_.nonEmpty)
            .map((_, 1))
            .keyBy(0)
            // 滚动事件窗口(按照process-time),如果使用event-time,即TumblingEventTimeWindows,则需要指定事件时间和watermark
            //            .window(TumblingProcessingTimeWindows.of(Time.seconds(5)))
            // 滑动时间窗口,窗口长度为5s,每次滑动长度为3s
            //            .window(SlidingProcessingTimeWindows.of(Time.seconds(5), Time.seconds(3)))
            // 会话窗口,两次处理时间相隔5秒以上,则不认为这是同一个窗口了
            //            .window(ProcessingTimeSessionWindows.withGap(Time.seconds(5)))
            // 简写:滚动窗口
            //            .timeWindow(Time.seconds(5))
            // 简写:滑动窗口
            //            .timeWindow(Time.seconds(5), Time.seconds(3))
            // 计数窗口:滚动
            //            .countWindow(10)
            // 计数窗口:滑动
            .countWindow(10, 5)
            .sum(1)

        result.print()

        env.execute("window demo")
    }
}

使用netcat工具,windows平台使用nc -lp 9999,linux使用nc -lk 9999 进行测试。


三、备注

flink还提供了很多窗口调用,根据需要进行使用,可以在源码种查看。
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:53:19  更:2022-04-23 10:55:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:13:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码