Flink DataStream 处理函数 ProcessFunction 和 KeyedProcessFunction

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink DataStream 处理函数 ProcessFunction 和 KeyedProcessFunction相关的知识,希望对你有一定的参考价值。

传送门:Flink 系统性学习笔记


1. 处理函数

在学习 ProcessFunction 之前,我们先来回顾一下 Flink 的抽象级别。Flink 为我们提供了不同级别的抽象层次来开发流处理和批处理应用程序:

在最底层有状态流处理中没有定义任何具体的算子(比如 map,filter,或者 window),而是提供一个统一的处理操作。它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作处理函数。

我们之前学习的转换算子,一般只是针对某种具体操作来定义的,能够拿到的信息比较有限。比如 map 算子,我们实现的 MapFunction 中,只能获取到当前的数据,定义它转换之后的形式;而像窗口聚合这样的复杂操作,AggregateFunction 中除数据外,还可以获取到当前的状态(以累加器 Accumulator 形式出现)。但是无论哪种算子,如果我们想要访问事件的时间戳,或者当前的 Watermark 信息,一般很难做到。跟时间相关的操作,目前我们一般会用窗口来处理。而在很多应用需求中&#x

以上是关于Flink DataStream 处理函数 ProcessFunction 和 KeyedProcessFunction的主要内容,如果未能解决你的问题,请参考以下文章

Flink DataStream 类型系统 TypeInformation

Flink DataStream 侧输出流 Side Output

Flink DataStream 侧输出流 Side Output

4.Flink入门案例前置说明准备环境代码实现-DataSet-了解DataStream--匿名内部类--处理批DataStream-匿名内部类-处理流LambdaOn-Yarn-掌握

使用 Flink 获取 DataStream 的文件名

Flink-DataStream流处理应用(Local模式下)运行流程-源码分析