一、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 举报,一经查实,本站将立刻删除。