错误:value join不是org.apache.spark.rdd.RDD [(Long,U)]的成员?

时间:2016-01-23 06:22:50

标签: scala apache-spark

我正在尝试编写以下方法:

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)

1 个答案:

答案 0 :(得分:5)

join函数是在一个名为PairRDDFunctions的特殊类型上定义的,并且在这种特殊类型的元组的RDD之间存在隐式转换。如果您使用的是旧版本的Spark,则需要导入隐式转换,例如import org.apache.spark.SparkContext._。在SparkContext上还有一个名为rddToPairRDDFunctions的显式(albiet弃用)函数,您可以手动使用它。

然而,显式函数和隐式转换都需要存在类型的类标记,因此您可以使用假类标记,但是因为您在Scala中工作,所以您可以将类标记添加为你函数的隐含参数。