我对闪身是个新手。我正在尝试在我的应用程序中启用检查点和状态。我从Flink文档中看到了我们是如何存储键控状态的。但是我想知道我们是否可以存储非键控状态(processfunction
的状态)
需要非键控状态有点不寻常,但是有一些文档和示例。
在用户代码中,这通常只用于实现自定义源和汇,这就是为什么示例将重点放在这些用例上。但在ProcessFunction
中,您也可以这样做,即实现CheckPointedFunction
接口(即InitializEstate
和SnapshotState
方法)。
非键控状态的唯一类型是ListState
、UnionState
和BroadcastState
,ListState
可能是您要使用的类型。UnionState
与ListState
非常相似,它只是在重新缩放期间使用不同的策略来重新分配状态(每个并行实例获得整个列表,而不是分配列表的一部分,并且实例负责知道要做什么)。BroadcastState
是BroadcastProcessFunction
或KeyedBroadcastProcessFunction
使用的内容。
问题内容: 我试图在Flink中的KeyedStream上执行映射操作: JsonToObjectMapper运算符的输出是 MessageObject 类的POJO,它具有String字段“ keyfield ”。然后,将流键入此字段。 MessageProcessorStateful是一个RichMapFunction,如下所示: 该代码引发NullPointer异常: 尽管我已经验证了’ke
是否可以从Flink流作业触发检查点? 我的用例是:我有两个流R和S要用滚动的时间窗口连接。来源是Kafka。我使用事件时间处理和BoundedOutOfOrdernessGenerator来确保来自两个流的事件最终出现在同一个窗口中。
我有一份Flink的工作,我尝试在后端类型RockDB中使用键控流状态函数(MapState), MyRichMapFunction是一个有状态函数,它扩展了RichMapFunction,RichMapFunction有以下代码, 将来,我想重新缩放并行度(从2到4),所以我的问题是,如何实现可重新缩放的键控状态,以便在更改并行度后,我可以将相应的缓存键控数据获取到其相应的任务槽中。我试图探索这
一、状态分类 相对于其他流计算框架,Flink 一个比较重要的特性就是其支持有状态计算。即你可以将中间的计算结果进行保存,并提供给后续的计算使用: 具体而言,Flink 又将状态 (State) 分为 Keyed State 与 Operator State: 2.1 算子状态 算子状态 (Operator State):顾名思义,状态是和算子进行绑定的,一个算子的状态不能被其他算子所访问到。官方
下面是我对Flink的疑问。 我们可以将检查点和保存点存储到RockDB等外部数据结构中吗?还是只是我们可以存储在RockDB等中的状态。 状态后端是否会影响检查点?如果是,以何种方式? 什么是状态处理器API?它与我们存储的保存点和检查点直接相关吗?状态处理器API提供了普通保存点无法提供的哪些额外好处? 对于3个问题,请尽可能描述性地回答。我对学习状态处理器API很感兴趣,但我想深入了解它的应
我可以在文档中看到: Flink目前只为没有迭代的作业提供处理保证。对迭代作业启用检查点会导致异常。为了在迭代程序上强制检查点,用户需要在启用检查点时设置一个特殊的标志:env.enablecheckpointing(interval,force=true)。 如果是一个而不是一个(这意味着它也可以保存状态),会有什么变化吗?