我有了的RDD
明確的返回類型的斯卡拉函數返回:做什麼,如果沒有在Scala的功能
def myfunction(x:Int):RDD = {
if (x==1) {
formRDD()
} else {
}
}
我不知道該怎麼做別的,如果我不想要形成一個空的RDD。
我有了的RDD
明確的返回類型的斯卡拉函數返回:做什麼,如果沒有在Scala的功能
def myfunction(x:Int):RDD = {
if (x==1) {
formRDD()
} else {
}
}
我不知道該怎麼做別的,如果我不想要形成一個空的RDD。
實際上返回一個空的RDD是一個有效的解決方案。當封閉類型是一個集合時,我不喜歡返回Option。 「空」在集合中完美定義,因此Option是多餘的。
// assuming you have sc in scope
def myfunction(x:Int): RDD[Int] =
if (x == 1) formRDD() else sc.emptyRDD[Int]
如果你不得不回到一個定期收集,你會同樣做到這一點:
def myfunction(x:Int): Seq[Int] =
if (x == 1) Seq(1,2,3) else Seq.empty[Int]
寫def myfunction(x:Int): Option[Seq[Int]] = ...
將是一個有點浪費。
恕我直言,你應該返回一個Option
,以便你清楚地表明這種方法可能沒有RDD
返回。在調用此方法的方法中,您需要照顧None
的情況,可能是.getOrElse(RDD.empty)
。
雖然有些人可能會說這種方法可能是浪費的,但這是一個關注點分離的問題。當然,如果你正在做一個10行的腳本,你不需要擔心返回一個Option
,你可以簡單地返回空RDD
注:我注意到熟悉
RDD
,所以我不不知道如何生成一個空的
如果你想在這裏不是很相關。想象一下,如果你想返回一個字符串,而函數被聲明爲返回RDD ......那麼呢? – Dima