scala中的更改未出现在jar中

时间:2018-01-22 17:18:46

标签: scala maven apache-spark jar terasort

我正在使用ehiggs terasort

该项目由Java和Scala组成。我想编辑一些Scala。最初我只是向com.github.ehiggs.spark.terasort.TeraGen.scala添加println

我做了更改并保存了文件。

然后按照自述文件运行mvn install。当我使用创建的jar时,我添加的额外println不会出现。

我还尝试运行mvn clean installmvn clean buildmvn clean package的各种变体,但没有运气。我甚至删除了jar文件以确保生成新文件。

有人知道为什么会这样吗?

修改 我添加的println是提交TeraGen.scala

在以下部分:

println("===========================================================================")
println("===========================================================================")
println(s"Input size: $size")
println(s"Total number of records: $numRecords")
println(s"Number of output partitions: $parts")
println("Number of records/output partition: " + (numRecords / parts))
println("===========================================================================")
println("===========================================================================")

我改为:

println("===========================================================================")
println("===========================================================================")
println("===========================================================================")
println(s"Input size: $size")
println(s"Total number of records: $numRecords")
println(s"Number of output partitions: $parts")
println("Number of records/output partition: " + (numRecords / parts))
println("===========================================================================")
println("===========================================================================")

但是第三个println从未出现过。

更新 我在不同的服务器上测试了jar,它按预期工作但它仍然无法在我的本地机器上运行。 Spark有可能以某种方式缓存这项工作吗?

就像一条额外的信息一样。如果我在Mac上编辑scala文件并构建jar并在我的本地计算机上运行它,则不会出现更改。如果我然后将jar scp到远程服务器并运行它,则会出现更改。从这一点来看,我确信这个改变包含在jar中,但当我在本地机器上运行时,有些东西会阻止它出现。

1 个答案:

答案 0 :(得分:0)

好的,我深究了这一点。

我尝试运行的新jar(包含我的更改)正在从一个位置运行。我注意到我的spark / jars文件夹中有一个jar的早期版本所以我删除了它并重新启动了Spark。然后拿起新罐子。

仅供参考,当我删除新jar并再次运行脚本时,我才注意到这一点。即使我收到错误声明无法找到jar,我也可以从jab日志中看到jar的某个版本正在执行,所以我在硬盘上搜索了jar名称。