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().equalTo()//JoinedStreams
            .window(EventTimeSessionWindows.withGap(Time.milliseconds(1)))//JoinedStreams 指定join等待时间
        .apply { (e1, e2) => e1 + "," + e2 } //DataStream  。
keyBy 返回KeyedStream
            .keyBy(new KeySelector() {//实体类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> ds=env.addSource
2、使用map、flatMap、join等格式化
 3、计算
  a、不keyBy,直接windowAll;
  b、keyBy,历史累计数据,可以调用process进行KeyedProcessFunction自定义窗口操作;
  c、window,通过KeyedStream的window api调用WindowedStream的api。
 4、addSink

你可能感兴趣的:(大数据,flink基础,flink,API,flink)