我有一个flink拓扑,该拓扑在CoProcessFunction中使用ListState [MyAvroClass]。
在我的CoProcessFunction中,我初始化
input = "Python is interactive"
parts = input.split(" ")
maxlen = max(map(lambda part: len(part), parts))
# or this, if you want to go even more elegant:
maxlen = max(map(len, parts))
print ('*' * (maxlen + 4))
for part in parts:
spaces = maxlen - len(part)
print("* " + part + (" " * spaces) + " *")
print ('*' * (maxlen + 4))
它运行正常,但是我无法处理avro模式的演变。即使我要从保存点重新开始工作,也存在反序列化数据的问题,例如,当我遍历listState迭代器时。
我一直出错:
var myState: ListState[MyAvroClass] = _
override def open(parameters: Configuration): Unit = {
val avroSerializer = new AvroSerializer[MyAvroClass](classOf[MyAvroClass])
myState = getRuntimeContext.getListState[MyAvroClass](new ListStateDescriptor[MyAvroClass]("myState", avroSerializer))
}
似乎他正在尝试获取一个字段,而该字段在我的avro类的先前版本中不存在。知道我该如何解决吗?