我正在尝试通过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
中发现了一个错误。因此,我修复了此问题,重新打包了MySparkJob.jar
,将其放回HDFS中并重新运行了作业。但是,该错误仍然存在。无论我做什么,似乎SPARK 正在重新使用我的初始版本的MySparkJob.jar
,因此我无法运行此jar的更新版本。
我正在使用spark 2.1.0
(映射器版本:Running Spark version 2.1.0-mapr-1801
)
我尝试过:
我觉得我一定在做些愚蠢的事(发生了!)。我的问题是:
答案 0 :(得分:0)
所以..在发布此问题时,让我想到,考虑到我尝试过的所有内容,这根本没有任何意义,而且一定是我做错了什么。在检查了libs
文件夹中包含的jar之后,似乎存在一个旧的sbt工件,(代码与sbt universal:stage
一起打包)似乎是我的主库的旧版本(它肯定已经在常春藤缓存中徘徊了,但是由于未知的原因,sbt包含了它。因为它包含相同的主类,所以我认为Spark正在使用该代码而不是我正在提交的jar(可能与如何解析类路径有关)。从lib文件夹中删除此文件后,我的工作似乎运行良好,并使用了更新的代码。我现在有新的问题要解决((它们是分开的/不同的,因此我将不在这里包括它们并使问题复杂化)),但这似乎至少可以解释为什么我一直看到这种奇怪的行为。