繁体   English   中英

Flink状态架构迁移

[英]Flink State Schema Migration

我在使用MemoryStateBackend的独立群集上有一个flink流应用程序。 Kryo的TaggedFieldSerializer被用作默认的序列化程序。

当我更改状态的架构并重新部署应用程序时,出现以下异常

Caused by: org.apache.flink.util.StateMigrationException: State migration isn't supported, yet.
at org.apache.flink.runtime.state.heap.HeapKeyedStateBackend.tryRegisterStateTable(HeapKeyedStateBackend.java:209)
at org.apache.flink.runtime.state.heap.HeapKeyedStateBackend.tryRegisterStateTable(HeapKeyedStateBackend.java:142)
at org.apache.flink.runtime.state.heap.HeapKeyedStateBackend.createValueState(HeapKeyedStateBackend.java:234)
at org.apache.flink.runtime.state.AbstractKeyedStateBackend$1.createValueState(AbstractKeyedStateBackend.java:315)
at org.apache.flink.api.common.state.ValueStateDescriptor.bind(ValueStateDescriptor.java:128)
at org.apache.flink.api.common.state.ValueStateDescriptor.bind(ValueStateDescriptor.java:35)
at org.apache.flink.runtime.state.AbstractKeyedStateBackend.getOrCreateKeyedState(AbstractKeyedStateBackend.java:312)
at org.apache.flink.runtime.state.AbstractKeyedStateBackend.getPartitionedState(AbstractKeyedStateBackend.java:392)
at org.apache.flink.runtime.state.DefaultKeyedStateStore.getPartitionedState(DefaultKeyedStateStore.java:124)
at org.apache.flink.runtime.state.DefaultKeyedStateStore.getState(DefaultKeyedStateStore.java:60)

如果有人为我提供解决方法,或者我应该使用FsStateBackend解决此问题,这将非常有用。

PS:如果我想在独立群集上运行的flink应用程序上使用S3上的FsStateBackend,则必须进行哪些配置更改。

使用FsStateBackend不能解决此问题,因为它还使用了HeapKeyedStateBackend ,这就是HeapKeyedStateBackend此异常的原因。

FLIP-22可以帮助解决此状态迁移问题,但尚未实现。

目前,我所听说的最好的选择是使用基于Avro的序列化程序,因为可以实现该序列化程序以使其无缝处理新旧模式。 但这不是让我胆怯的事情。

关于FsStateBackend的配置,请参见此处的(写得很好)文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM