我在Spark中获得了简单的getter方法的意外行为。Spark的方法关闭
1)我有一个抽象类,有一个变量和它的getter。
abstract class SparkApp {
private var _date: String = _
def getDate: String = _date
def run(): Unit
def main(args: Array[String]): Unit = {
_date: String = "2017-02-10"
run()
}
}
2)扩展SparkApp
做RDD转换。
object MySparkApp extends SparkApp {
override def run(): Unit = {
rdd.map { each =>
// Call parent's method
// getDate returns null, _date has value though.
getDate.replace("-", "/")
}
}
}
在簇3)运行MySparkApp
,然后getDate
返回NULL。
4)但是,如果直接调用_date
,则按预期工作。
所以我的问题是,这两者有什么区别?
我通过Spark docs的Passing Functions to Spark看过,但没有任何提示。
提前致谢!
这里没有足够的能够告诉你问题是什么。请创建一个[最小化,完整和可验证的示例](http://stackoverflow.com/help/mcve),以说明您的问题。 –
@JoeC明白了。我修改了上面的代码。 – NaHeon