我正在使用ehiggs terasort。
该项目由Java和Scala组成。我想编辑一些Scala。最初我只是向com.github.ehiggs.spark.terasort.TeraGen.scala添加println
。
我做了更改并保存了文件。
然后按照自述文件运行mvn install
。当我使用创建的jar时,我添加的额外println
不会出现。
我还尝试运行mvn clean install
,mvn clean build
,mvn 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中,但当我在本地机器上运行时,有些东西会阻止它出现。
答案 0 :(得分:0)
好的,我深究了这一点。
我尝试运行的新jar(包含我的更改)正在从一个位置运行。我注意到我的spark / jars文件夹中有一个jar的早期版本所以我删除了它并重新启动了Spark。然后拿起新罐子。
仅供参考,当我删除新jar并再次运行脚本时,我才注意到这一点。即使我收到错误声明无法找到jar,我也可以从jab日志中看到jar的某个版本正在执行,所以我在硬盘上搜索了jar名称。