如果作业中的类更改

时间:2016-05-13 19:16:42

标签: apache-spark spark-streaming

我的应用程序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',这就是造成这个问题的原因。

我有两个主要问题:

  1. 如何解决此问题?我知道添加private static long serialVersionUID = 1113799434508676095L;可能会修复它,但我不想将其添加到所有类中,因为任何类都可以在当前版本和下一版本之间进行更改。还有什么更好的吗?
  2. 检查点目录存储是什么?它是否存储了以前jar中的所有类?或者只是他们的名字和serialVersionUID? This没有提供关于检查点内部的详细信息。它的大小只有〜6Mb。
  3. 感谢任何帮助。

0 个答案:

没有答案