我正在使用scala 2.11.8运行Spark 2 - shell,并想知道以下行为,其中每一行都是要在shell中执行的代码块:
def myMethod() = "first definition"
val tmp = myMethod(); val out = tmp
println(out) // prints "first definition"
def myMethod() = "second definition" // override above myMethod
val tmp = myMethod(); val out = tmp
println(out) // should be "second definition" but is "first definition"
因此,如果我重新定义myMethod
,在这种情况下似乎不会更新实现。我发现倒数第二个语句(val out = tmp
)会导致这种行为,如果在一个单独的块中移动它,代码就可以了。
所以我的问题:这是期望的行为还是错误?
答案 0 :(得分:0)
这确实是一个Spark-Shell错误(或更多Scala REPL错误),将在Spark 2.3中解决:https://issues.apache.org/jira/browse/SPARK-20706