BroadcastState中似乎并没有用到与CheckpointedFunction接口相关的类,在两个数据流中也没有实现这个接口

BroadcastState中似乎并没有用到与CheckpointedFunction接口相关的类,在两个数据流中也没有实现这个接口

BroadcastState中似乎并没有用到与CheckpointedFunction接口相关的类,在两个数据流中也没有实现这个接口,只是在算子操作的过程中使用到了MapStateDescriptor。那是否意味着当前这个案例并不会被checkpoint执行snapshot的时候将数据持久化到外部存储系统中呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

在这个案例里面,broadcaststate是为了广播mapstate。在checkpoint期间,只会存储mapstate的数据。broadcaststate只是负责广播mapstate中的数据而已。

  • 蒋昌魁 提问者 #1

    老师,我记得课程里有提到,checkpoint期间,是通过snapshotState这个方法来将数据持久化到外部存储系统的。但是我发现这里,以及包括之前的RichFlatMapFunction这些类和它的父类中也都没有snapshotState相关的方法和默认实现。那么这些类中定义了state之后,是flink程序中通过反射封装好了逻辑,自动的扫描程序中相关的state,然后在checkpoint期间自动的进行持久化操作吗?

    2023-11-05 20:20:11
  • 徐老师 回复 提问者 蒋昌魁 #2
    RichFLatmapFunction并不是有状态的算子,也就是说这个算子里面默认没有用到state,所以没有持久化状态的相关方法。大部分的source,sink,以及中间的转换算子都不是有状态的,想要在里面使用状态,需要自己实现状态接口,并且覆盖相关方法。例如前面创建的mybuffersink。
    2023-11-06 08:40:45
  • 针对keyedstate类型的state,不需要自己实现snapshot这些接口,而broadcaststate又是一个特殊的state,只是为了广播数据,底层用的还是mapstate。
    2023-11-06 08:56:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师