在Flink中,当我们需要获取到算子的Processing Time或者Water Mark以及定时器时,可以实现ProcessFunction函数。
目前该函数主要有:K恶业的ProcessFuntion,ProcessFunction,CoPropcessFunction等,核心功能主要如下:
- 可以使用状态计算,能够在算子中访问Keyed State
- 可以设置定时器
- 侧输出,可以将一部分数据发送到另外一个数据流中,而且输出的两个数据流数据类型可以不一样。
如下自定义实现一个KeyedProcessFunction:
public class MyKeyedProcessFunctionJava extends KeyedProcessFunction<String, StockPrice,String> {
private ValueState<Long> currentTime;
private ValueState<Double> lastPrice ;
private static long intervalMs = 500 ;
OutputTag<StockPrice> highLevel ;
OutputTag<StockPrice> middleLevel;
OutputTag<StockPrice> lowLevel;
public MyKeyedProcessFunctionJava(OutputTag<StockPrice> highLevel,
OutputTag<StockPrice> middleLevel,
OutputTag<StockPrice> lowLevel){
this.lowLevel = lowLevel;
this.middleLevel= middleLevel;
this.highLevel = highLevel;
}
@Override
public void open(Configuration parameters)

本文介绍如何在Flink中通过自定义KeyedProcessFunction实现基于价格阈值的数据分流,并设置定时器来处理时间相关的业务逻辑。
最低0.47元/天 解锁文章
661

被折叠的 条评论
为什么被折叠?



