我在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