1.世界
2.概述
ProcessFunction 是flink 提供面向用户low-level 层级的api,通过ProcessFunction可以访问state、注册处理时间/事件时间定时器来帮助我们完成一些比较复杂的操作。
但是其有一个限制那就是只用使用在keyedStream中,是由于根据getRuntimeContext 得到的StreamingRuntimeContext
只提供了KeyedStateStore
的访问权限,所以只能访问keyd state
, 另外根据前面的分析可知,注册的定时器必须是与key
相关,也就解释了在ProcessFunction
中只能在keyedStream
做定时器注册。
ProcessFunction 函数是低阶流处理算子,可以访问流应用程序所有(非循环)基本构建块:
- 事件 (数据流元素)
- 状态 (容错和一致性)
- 定时器 (事件时间和处理时间)
ProcessFunction 可以被认为是一种提供了对 KeyedState 和定时器访问的 FlatMapFunction。每在输入流中接收到一个事件,就会调用来此函数来处理。
对于容错的状态,ProcessFunction 可以通过 RuntimeContext 访问 KeyedState,类似于其他有状态函数访问 KeyedState。