我的应用程序jar位于HDFS中,它定义了长时间运行的Spark Streaming作业,我在HDFS中也使用了checkpoint dir。每当我对工作进行任何更改时,我都会删除该jar并上传一个新的。
现在,如果我上传一个新jar并删除checkpoint目录,它可以正常工作。但是,如果我不删除检查点目录,我会收到如下错误:
imestamp =“2016-05-13T18:49:47,887 + 0000”,level =“WARN”,threadName =“main”,logger =“org.apache.spark.streaming.CheckpointReader”,message =“阅读错误检查点来自文件hdfs:// myCheckpoints / application-1 / checkpoint-1463165355000“,exception = ”java.io.InvalidClassException:some.package.defined.here.ConcreteClass; local class incompatible:stream classdesc serialVersionUID = -7808345595732501156 ,本地班级serialVersionUID = 1574855058137843618
我已经从上一次实现中更改了'ConcreteClass',这就是造成这个问题的原因。
我有两个主要问题:
private static long serialVersionUID = 1113799434508676095L;
可能会修复它,但我不想将其添加到所有类中,因为任何类都可以在当前版本和下一版本之间进行更改。还有什么更好的吗?感谢任何帮助。