有幾件事情錯了你的閃避,我們將開始有: 因爲根據發佈的代碼,你的語法是不完整的,DEF是否定義不當它是引發錯誤:
def startWithHorI(s:String): String=
{
if(s.startsWith("I")) // missing extra paren char in original post
s // do not need return statement
if(s.startsWith("H")) // missing extra paren char in original post
s // do not need return statement
}
這仍然會返回一個錯誤,因爲編譯器發現它返回Any
時,我們期待String
。如果我們沒有其他的情況(當s不以H或I開頭時會返回什麼?),我們不能這樣做 - 編譯器會將此視爲Any
返回類型。對此的修正將會有其他條件,最終返回String
。
def startWithHorI(s: String): String = {
if(s.startsWith("I")) s else "no I"
if(s.startsWith("H")) s else "no H"
}
如果你不想返回任何東西,那麼Option
是值得看的返回類型。
最後,我們可以實現您通過過濾器做什麼 - 無需映射與DEF:
val fileRDD = sc.textFile("wordcountsample.txt")
val checkRDD = fileRDD.filter(s => s.startsWith("H") || s.startsWith("I"))
checkRDD.collect
謝謝!這當然有幫助.. –