Spark-shell没有重写方法定义

时间:2017-05-11 06:27:37

标签: scala shell apache-spark-2.0

我正在使用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)会导致这种行为,如果在一个单独的块中移动它,代码就可以了。

所以我的问题:这是期望的行为还是错误?

1 个答案:

答案 0 :(得分:0)

这确实是一个Spark-Shell错误(或更多Scala REPL错误),将在Spark 2.3中解决:https://issues.apache.org/jira/browse/SPARK-20706