栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Flink系列窗口随笔

Flink系列窗口随笔

文章目录
  • 窗口概念
  • Window API
  • 窗口函数
  • Aggregate 示例
  • 其他API说明
  • 总结

窗口概念

一句基于Flink流处理引擎的块处理的最佳方案。

窗口类型:时间窗口,计数窗口

基本流程:

1.先对数据分组

2.先开窗

3.窗口函数,对窗口实现怎么样的操作。

先分组的原因:

分组数据流将你的window计算通过多任务并发执行,以为每一个逻辑分组流在执行中与其他的逻辑分组流是独立地进行的。

在非分组数据流中,你的原始数据流并不会拆分成多个逻辑流并且所有的window逻辑将在一个任务中执行,并发度为1。

不分组等价于Windowall操作

基本API:

这个很明朗了,其中 slide就是步长的意思。

那么也给意味着这玩意就是滑动的。

Window API

首先说明Window这个API是最原生的,我们可以通过Window直接使用timewindow等窗口。

例如:

 studentdata.keyBy("age").timeWindow(Time.seconds(15));
        studentdata.keyBy("age").window(TumblingProcessingTimeWindows.of(Time.seconds(15)));

这个两个家伙是等价的。

具体的还入下:

timewindow的源码

那么为什么还要说这个玩意的,原因也很现实。那就是用window来实现会话窗口。

会话窗口实现:

       studentdata.keyBy("age").window(EventTimeSessionWindows.withGap(Time.seconds(15)));
窗口函数

对于窗口函数我们也有两大分类,一个是增量聚合,一个是全窗口函数。

前者其实即使在窗口当中来一个数据处理一个数据

ReduceFunction AggregateFunction

后者就是当数据把窗口填满了或者达到某个条件,或者时间到了的时候那么进行计算。

ProcessWindowFunction WindowFunction

Aggregate 示例
SingleOutputStreamOperator aggregate = studentTupleTimeWindowWindowedStream.aggregate(new AggregateFunction() {
    
    //输入类型,中间类型,输出类型
    @Override
    public Integer createAccumulator() {
        //初始化其实是integer的初始值(中间那个),createAccumulator其实就是initialAccumulator不过你这个是自己定义的所以类似于create
        return 0;
    }

    @Override
    public Integer add(Student student, Integer integer) {
        return integer + 1;
    }

    @Override
    public Integer getResult(Integer integer) {
        return integer;
    }

    @Override
    public Integer merge(Integer integer, Integer acc1) {
        return null;
    }
});

其他的reduce以前演示过,其实都是聚合里面的(见Flink随笔上)

apply其实也很简单实现windowFunction即可。

一般情况下使用 aggregate是比较好的,灵活度比较高。

其他API说明

tigger

这玩意是窗口触发器。

evictor

这个是移除器。

sideOutputLateData(latertag)

这个是给迟到的数据打个标签,后面对应的是接受

aggregate.getSideOutput(latertag);
总结

关于窗口的话其实很简单没啥好说的,只要把前面的东西搞懂了就ok的。
(Ps:日常笔记上传)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号