簡體   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