我收到類型不匹配錯誤以下情形類型不匹配發現:單位預計:RDD [XYZ ...]
//scores sample file
0000006,Danny,6.2
0000002,Danny,7.0
代碼。
case class Person(id: String, dob: String, country: String, score: Double)
def getResultRecords(persons: RDD[List[String]]): RDD[Person] = {
val personUS = persons.map(rec => Person(rec.head, rec(1),"US"), java.lang.Double.parseDouble(cpg.getOrElse(rec.head,"0").toString())
val personMX = persons.map(rec => Person(rec.head, rec(1),"MX"),java.lang.Double.parseDouble(cpg.getOrElse(rec.head,"0").toString()))
val personAll = personUS.union(personMX)
//return personAll
}//Getting an error saying " type mismach found : Unit expected : RDD[Person]"
我在做什麼錯在這裏?我該如何解決它?
請幫幫我。
Spark的懶惰與此無關 - 它在編譯時根本不起作用。 –
@TzachZohar,你試過重現錯誤嗎?因爲我這樣做了,並且如果不在最後放回返回語句,或者使用像personAll.cache()這樣的操作,編譯器將引發該類型不匹配異常。 – Micho
正如其他答案所示,添加return語句(帶或不帶'return'關鍵字)解決了這個問題;返回正確的值不是Spark的「動作」,也不是「緩存」(它是一種轉換) - 兩者都確實解決了問題(因爲'cache'也返回'RDD [Person]'),但兩者都沒有任何關係這個答案。 –