Flink 部分Function的依赖关系

1. Function 接口的实现

Function (org.apache.flink.api.common.functions)

RichFunction (org.apache.flink.api.common.functions)
MapFunction (org.apache.flink.api.common.functions)
KeySelector (org.apache.flink.api.java.functions)
ReduceFunction (org.apache.flink.api.common.functions)
SinkFunction (org.apache.flink.streaming.api.functions.sink)
FlatMapFunction (org.apache.flink.api.common.functions)
FilterFunction (org.apache.flink.api.common.functions)
AggregateFunction (org.apache.flink.api.common.functions)
SourceFunction (org.apache.flink.streaming.api.functions.source)
JoinFunction (org.apache.flink.api.common.functions)
AllWindowFunction (org.apache.flink.streaming.api.scala.function)
CrossFunction (org.apache.flink.api.common.functions)
CoFlatMapFunction (org.apache.flink.streaming.api.functions.co)
FlatJoinFunction (org.apache.flink.api.common.functions)
FoldFunction (org.apache.flink.api.common.functions)
CombineFunction (org.apache.flink.api.common.functions)
AsyncFunction (org.apache.flink.streaming.api.functions.async)
Partitioner (org.apache.flink.api.common.functions)
TimestampAssigner (org.apache.flink.streaming.api.functions)
AggsHandleFunctionBase (org.apache.flink.table.runtime.generated)
GroupCombineFunction (org.apache.flink.api.common.functions)
MapBundleFunction (org.apache.flink.table.runtime.operators.bundle)
CoMapFunction (org.apache.flink.streaming.api.functions.co)
TimestampExtractor (org.apache.flink.streaming.api.functions)
NamespaceAggsHandleFunctionBase (org.apache.flink.table.runtime.generated)
GroupReduceFunction (org.apache.flink.api.common.functions)
WindowFunction (org.apache.flink.streaming.api.functions.windowing)
CoGroupFunction (org.apache.flink.api.common.functions)
InternalWindowFunction (org.apache.flink.streaming.runtime.operators.windowing.functions)
MapPartitionFunction (org.apache.flink.api.common.functions)
AllWindowFunction (org.apache.flink.streaming.api.functions.windowing)
AggregationsFunction (org.apache.flink.table.runtime.aggregate)
WindowFunction (org.apache.flink.streaming.api.scala.function)
AsyncFunction (org.apache.flink.streaming.api.scala.async)

1.1 RichFunction 的实现

AbstractRichFunction (org.apache.flink.api.common.functions)
JoinCondition (org.apache.flink.table.runtime.generated)
ScalaWindowFunctionWrapper (org.apache.flink.streaming.api.scala.function.util)
ScalaAllWindowFunctionWrapper (org.apache.flink.streaming.api.scala.function.util)
StatefulFunction (org.apache.flink.streaming.api.scala.function)

1.1.1 AbstractRichFunction 的实现

RichSinkFunction (org.apache.flink.streaming.api.functions.sink)
RichReduceFunction (org.apache.flink.api.common.functions)
RichSourceFunction (org.apache.flink.streaming.api.functions.source)
ProcessFunction (org.apache.flink.streaming.api.functions)
KeyedProcessFunction (org.apache.flink.streaming.api.functions)
RichFlatMapFunction (org.apache.flink.api.common.functions)
ProcessJoinFunction (org.apache.flink.streaming.api.functions.co)
NoOpFunction (org.apache.flink.api.common.functions.util)
TableFunctionResultFuture (org.apache.flink.table.runtime.collector)
CoProcessFunction (org.apache.flink.streaming.api.functions.co)
RichGroupReduceFunction (org.apache.flink.api.common.functions)
KeyedCoProcessFunction (org.apache.flink.streaming.api.functions.co)
TerminationCriterionMapper in BulkIterationBase (org.apache.flink.api.common.operators.base)
RichCoFlatMapFunction (org.apache.flink.streaming.api.functions.co)
RichCrossFunction (org.apache.flink.api.common.functions)
RichAsyncFunction (org.apache.flink.streaming.api.functions.async)
RichJoinFunction (org.apache.flink.api.common.functions)
RichFoldFunction (org.apache.flink.api.common.functions)
WatermarkGenerator (org.apache.flink.table.runtime.generated)
MapProjector in PlanProjectOperator (org.apache.flink.api.java.operators.translation)
ProcessAllWindowFunction (org.apache.flink.streaming.api.functions.windowing)
RichParallelSourceFunction (org.apache.flink.streaming.api.functions.source)
RichAllWindowFunction (org.apache.flink.streaming.api.functions.windowing)
JoinConditionWithNullFilters in AbstractStreamingJoinOperator (org.apache.flink.table.runtime.operators.join.stream)
RichWindowFunction (org.apache.flink.streaming.api.functions.windowing)
RichCoGroupFunction (org.apache.flink.api.common.functions)
RichCoMapFunction (org.apache.flink.streaming.api.functions.co)
TableFunctionCollector (org.apache.flink.table.runtime.collector)
RichGroupCombineFunction (org.apache.flink.api.common.functions)
RichMapPartitionFunction (org.apache.flink.api.common.functions)
WrappingFunction (org.apache.flink.api.java.operators.translation)
ProcessWindowFunction (org.apache.flink.streaming.api.functions.windowing)
RichAggregateFunction (org.apache.flink.api.common.functions)
RichFlatJoinFunction (org.apache.flink.api.common.functions)
BaseBroadcastProcessFunction (org.apache.flink.streaming.api.functions.co)
DataSetPreAggFunction (org.apache.flink.table.runtime.aggregate)
ProcessAllWindowFunction (org.apache.flink.streaming.api.scala.function)
RichAllWindowFunction (org.apache.flink.streaming.api.scala.function)
DataSetSessionWindowAggregatePreProcessor (org.apache.flink.table.runtime.aggregate)
TableFunctionCollector (org.apache.flink.table.runtime)
RichWindowFunction (org.apache.flink.streaming.api.scala.function)
ProcessWindowFunction (org.apache.flink.streaming.api.scala.function)
RichAsyncFunction (org.apache.flink.streaming.api.scala.async)

1.2 各类Function的区别

转换算子是无法访问事件的时间戳信息和水位线信息的。例如MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间。
基于此,DataStream API提供了一系列的Low-Level转换算子。
这类Function实现RichFunction接口,而其定制化了以下四种方法

void open(Configuration parameters) throws Exception;
void close() throws Exception;
RuntimeContext getRuntimeContext();
IterationRuntimeContext getIterationRuntimeContext();
void setRuntimeContext(RuntimeContext t);

它们能够做到下面的功能:

能进行状态编程
可以访问时间戳、watermark
注册定时事件
输出特定的一些事件,例如超时事件等
Process Function用来构建事件驱动的应用以及实现自定义的业务逻辑(使用之前的window函数和转换算子无法实现)。例如,Flink SQL就是使用Process Function实现的
实现状态编程

Process Function定时器、测输出流参考
状态编程参考

1.3 直接对KeyedStream流运用状态编程方法

其实KeyedStream的reduce、max、min内部逻辑本来就是运用到了状态编程,如果在实际中要运用状态编程,能直接使用这些方法会更便捷

filterWithState
mapWithState
flatMapWithState

状态编程参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值