2016-01-23 53 views
2

我試着寫了下面的方法:錯誤:值連接不是org.apache.spark.rdd.RDD [(Long,U)]的成員?

scala> def isEqual[U, V](expected: RDD[U], result: RDD[V]) = { 
|   val expectedIndexValue: RDD[(Long, U)] = expected.zipWithIndex().map{ case (row, idx) => (idx, row) } 
|   val resultIndexValue: RDD[(Long, V)] = result.zipWithIndex().map{ case (row, idx) => (idx, row) } 
|   val combined = expectedIndexValue.join(resultIndexValue) 
|  } 

但我得到了以下錯誤:

<console>:52: error: value join is not a member of org.apache.spark.rdd.RDD[(Long, U)] 
     val combined = expectedIndexValue.join(resultIndexValue) 

回答

5

join函數是在一個名爲PairRDDFunctions特殊類型的定義,有一個隱式轉換在這種特殊類型的元組的RDD之間。如果您使用的是舊版本的Spark,則需要導入隱式轉換,例如import org.apache.spark.SparkContext._。 SparkContext上還有一個明確的(albiet不贊成的)函數,可以手動使用,名爲rddToPairRDDFunctions

但是兩者的顯函數和隱式轉換需要的各類類標籤存在,所以你可以使用一個假類的標籤,但因爲你是在斯卡拉的工作,你可能也只是添加類標籤作爲你的函數的隱含參數。

+0

你剛剛在我的同一時間回答,所以他正在斯卡拉運行Spark解釋器?他不需要在某個地方打電話嗎?或者他的方法是什麼?很高興刪除我的答案,如果我遠離基地感謝 – JimLohse

+1

耶,這是scala語法正在使用。 – Holden

+0

我明白了,但是他不需要在某個地方打電話來創建RDD嗎? – JimLohse

相關問題