如果Flink应用程序在发生故障或更新后正在启动备份,那么不明确属于KeyedState或OperatorState的类变量是否会持久化?
例如,Flink的留档中描述的BoundedOutOfOrdernessGenerator有一个电流最大时间戳变量。如果更新了Flink应用程序,电流最大时间戳中的值是否会丢失,或者是否会写入在应用程序更新之前创建的保存点?
这样做的真正原因是我想实现一个自定义水印生成器(类似于此),如果源空闲时间过长,则在生成水印时切换到处理时间。然而,我希望根据类变量重置为其原始默认值(例如,在我上面提供的链接示例中的Long.MIN\u值),检测到应用程序在更新或失败后恢复联机。这样,我可以确保水印生成器不会将花了五分钟的应用程序更新误认为源空闲了五分钟。
此外,如果更新了应用程序,即使没有对水印生成器进行更改,Flink是否会重新启动每个水印生成器操作符?
只有由Flink显式管理的状态才会被持久化——因此,是的,从快照还原时,currentMaxTimestamp中的值会丢失。当前水印也不包括在快照中。
我认为您可以做的是,让您的水印生成器实现CheckpointedFunction接口,尽管我还没有尝试过。然后可以实现这两种方法:
public void snapshotState(FunctionSnapshotContext context)
public void initializeState(FunctionInitializationContext context)
在初始化状态方法中,您可以访问context.is恢复(),它可以让您知道是否从快照重新启动。
下面是我对Flink的疑问。 我们可以将检查点和保存点存储到RockDB等外部数据结构中吗?还是只是我们可以存储在RockDB等中的状态。 状态后端是否会影响检查点?如果是,以何种方式? 什么是状态处理器API?它与我们存储的保存点和检查点直接相关吗?状态处理器API提供了普通保存点无法提供的哪些额外好处? 对于3个问题,请尽可能描述性地回答。我对学习状态处理器API很感兴趣,但我想深入了解它的应
我知道stackoverflow上也有类似的问题,但在调查了其中几个之后,我知道 > 他们正在使用不同的存储格式 但这些并不是令人困惑的地方,我不知道什么时候该用一个,什么时候该用另一个。 考虑以下两种情况: 如果由于某种原因(例如错误修复或意外崩溃)需要关闭或重新启动整个应用程序,那么我必须使用保存点来恢复整个应用程序
我想在flink中测试一次端到端的处理。我的工作是: Kafka资料来源- 我在mapper1中放了一个< code > thread . sleep(100000),然后运行了这个作业。我在停止作业时获取了保存点,然后从mapper1中删除了< code > thread . sleep(100000),我希望该事件应该会被重放,因为它没有下沉。但这并没有发生,乔布斯正在等待新的事件。 我的Ka
我试图检查/保存我在EMR上运行的flink状态到AWS上的s3存储桶。请注意: 实例(主节点和核心节点)正确设置了IAM角色,以访问s3 bucket及其内部的所有目录/文件(AmazonS3FullAccess策略附加到该角色,没有任何内容覆盖它) jobmanager日志:
考虑使用以下管道的Apache Flink流媒体应用程序: 其中每个函数都是非状态运算符(例如
我从我的网络商店API调用中获取XML,其结构非常像下面的示例: 其中有更多的参数,数量取决于许多外部因素。我正在尝试获取用户名,当id“111”和id“112”的值是我要查找的值时 上述代码按预期返回“userOne”和“userTwo”。 问题是,Id“111”要么有值“Param 1 is on”要么什么都没有,如果没有值,它就不会显示在XML中。所以我需要一个表达式来检查id为“111”的