Java Spark submit正在重新使用以前的jar

Java Spark submit正在重新使用以前的jar,java,scala,apache-spark,spark-submit,Java,Scala,Apache Spark,Spark Submit,我试图通过spark submit运行一个简单的作业。我的做法如下: spark-submit --class com.my.namespace.MyJobClass --master local --deploy-mode client --conf spark.driver.extraClassPath=$(echo ./lib/*.jar | tr ' ' ':') --verbose hdfs://tmp/jars/mySparkJob.jar args (注意,我已将所

我试图通过spark submit运行一个简单的作业。我的做法如下:

spark-submit --class com.my.namespace.MyJobClass  --master local --deploy-mode client --conf spark.driver.extraClassPath=$(echo ./lib/*.jar | tr ' ' ':')  --verbose    hdfs://tmp/jars/mySparkJob.jar  args 
(注意,我已将所有类名等重命名为“MyJob”样式,以简化这里的工作)。作业提交得很好,主类解析得很好,我正在毫无问题地解析所有依赖项

然而,在第一次运行时,我在
MyJobClass
中发现了一个bug。所以我修复了这个问题,重新打包了MySparkJob.jar,把它放回HDFS并重新运行这个作业。然而,这个错误仍然存在。无论我做什么,SPARK似乎都在重新使用我的初始版本的
MySparkJob.jar
,因此我无法运行这个jar的更新版本

我正在使用spark
2.1.0
(mapr版本:
运行spark版本2.1.0-mapr-1801

我试过:

  • 从spark的本地和群集模式运行
  • 反编译jar以确保代码更改存在
  • 重命名jar并运行它-令人费解的是,它仍然使用旧代码
  • 使用本地和基于hdfs的固定jar版本
  • 重新启动资源管理器
  • 正在删除spark.warn.archive->maprfs:///apps/spark/spark-jars.zip
我觉得我一定在做一些愚蠢的事情(这种事经常发生!)。我的问题是:

  • 我需要清除工作之间的火花吗?如果是的话,我需要清除什么?它在哪里
  • spark是否有效地压缩了我的依赖项并将它们放在某个地方?如果是,在哪里
  • 还有其他可能有帮助的观察结果吗

  • 所以。。当我发布这个问题的时候,它让我觉得,考虑到我已经尝试过的所有事情,它毫无意义,而且它一定是我做错了什么。在检查了
    libs
    文件夹中包含的jar之后,似乎存在一个旧的sbt工件(代码与
    sbt universal:stage
    打包在一起),它似乎是我的主库的旧版本(它一定是挂在常春藤缓存或其他什么东西中,但由于未知的原因,sbt包含了它). 由于它包含相同的主类,我相信Spark使用的是该代码,而不是我提交的jar(可能与如何解析类路径有关)。从lib文件夹中删除此文件后,我的作业似乎运行良好,并使用较新的代码。我现在有新的问题要解决(它们是分开的/不同的,所以我不会在这里把它们包括进来,让问题复杂化),但这似乎至少解释了我为什么会看到这种奇怪的行为

    正如我发现的那样,您正在从位于hdfs上的jar文件提交作业。我是真的吗?如果是,那么这是一个奇怪的动作。如果您担心您的依赖性,您可以使用着色jar文件来解决它。之后,尝试从发送到主节点的jar文件提交。奇怪的是,我得到了一个类似的问题-但是有一个
    .py
    文件,并且是从本地磁盘(不是hdfs)提交的。