微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flink DataStream API

一、DataStream方法

Flink专题三:Flink DataStream 算子介绍及使用_beyond的架构之旅的博客-CSDN博客_datastream flink

在这里插入图片描述


split 拆分stream,返回SplitStream,SplitStream定义了select方法,可以根据select方法查询拆分的datastream。
connect合并流,只能连接两个流,两个流类型可以不一致,返回ConnectedStreams(CoMap, CoFlatMap方法)。
union     可以连接多个流,流的类型必须一致 返回DataStream。
join  join(otherStream).where(<KeySelector>).equalTo(<KeySelector>)//JoinedStreams
            .window(EventTimeSessionWindows.withGap(Time.milliseconds(1)))//JoinedStreams 指定join等待时间
        .apply { (e1, e2) => e1 + "," + e2 } //DataStream  。
keyBy 返回KeyedStream
            .keyBy(new KeySelector<ProductViewData, String>() {//实体类keyby写法
            @Override
            public String getKey(ProductViewData value) throws Exception {
                return value.productId;
            }
            //时间窗口 6秒  滑动间隔3秒
        })   。

partitionCustom 自定义分区
rebalance    自动分区,防止数据倾斜
shuffle     自定义分区
broadcast    广播状态,可以把用户黑名单广播到广播变量中,然后事件流和广播的配置流连接      
                          https://blog.csdn.net/wangpei1949/article/details/99698978

map
flatMap
process  //入参ProcessFunction
filter
coGroup(dataStream).where(_.gdsId) 类似join,可以实现left join

timeWindowAll AllWindowedStream
countwindowAll
windowAll

二、KeyedStream 继承DataStream,通过调用keyBy


process //入参ProcessFunction KeyedProcessFunction     onTimer方法实现延时处理。
timeWindow 时间窗口,一个参数滚动窗口,两个参数滑动窗口  WindowedStream
countwindow 计数窗口
window
reduce
fold、sum、min、minBy
不能调用windowAll等方法

三、WindowedStream 


 * 增量聚合窗口中每进入一条数据,就进行一次计算
 •reduce(reduceFunction) 入参出参数据类型一致。
 •aggregate(aggregateFunction) 不需要入参和出参一致
 •sum(),min(),max()
 全量聚合
 •apply(windowFunction) 过时
 •process(processWindowFunction) 效率比较低
 processWindowFunction比windowFunction提供了更多的上下文信息。


 四、实时计算流程


 1、获取数据流DataStreamSource
final StreamExecutionEnvironment env= StreamExecutionEnvironment.getExecutionEnvironment(); //自定义数据源SourceFunction RichParallelSourceFunction DataStreamSource<Tuple2<String, Long>> ds=env.addSource
2、使用map、flatMap、join等格式化
 3、计算
  a、不keyBy,直接windowAll;
  b、keyBy,历史累计数据,可以调用process进行KeyedProcessFunction自定义窗口操作;
  c、window,通过KeyedStream的window api调用WindowedStream的api。
 4、addSink

原文地址:https://www.jb51.cc/wenti/3288689.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐