赞
踩
在Flink流式计算中,最重要的转换就是窗口转换Window,在DataStream转换图中,可以发现处处都可以对DataStream进行窗口Window计算。
窗口(window)就是从 Streaming 到 Batch 的一个桥梁
。窗口将无界流(unbounded data stream)划分很多有界流(bounded stream),对无界流进行计算。
在实际业务需求中,往往说窗口,指的就是基于时间Time窗口,比如最近1分钟内数据,指的就是1分钟时间内产生的数据,放在窗口中。
Flink Window 窗口的结构中,有两个必须的两个操作:
在Flink计算引擎中,支持窗口类型有很多种,几乎所有Streaming流式计算引擎需要实现窗口都支持。
1)、时间窗口TimeWindow
2)、计数窗口CountWindow
数据条目数
进行设置窗口,比如每10条数据统计一次package com.lyj.sx.flink.day05; import org.apache.flink.configuration.Configuration; import org.apache.flink.streaming.api.datastream.AllWindowedStream; import org.apache.flink.streaming.api.datastream.DataStreamSource; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.windowing.windows.GlobalWindow; public class CountWindowAllDemo { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration()); DataStreamSource<String> source = env.socketTextStream("192.168.25.62", 8889); SingleOutputStreamOperator<Integer> map = source.map(Integer::parseInt); //不keyBy,直接划分窗口 //窗口内的数据达到5条,就生成一个窗口,然后对窗口内的数据进行计算 AllWindowedStream<Integer, GlobalWindow> win = map.countWindowAll(5); SingleOutputStreamOperator<Integer> sum = win.sum(0); sum.print(); env.execute("pxj"); } }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。