我正在尝试编写以下方法:
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)
答案 0 :(得分:5)
join函数是在一个名为PairRDDFunctions
的特殊类型上定义的,并且在这种特殊类型的元组的RDD之间存在隐式转换。如果您使用的是旧版本的Spark,则需要导入隐式转换,例如import org.apache.spark.SparkContext._
。在SparkContext上还有一个名为rddToPairRDDFunctions
的显式(albiet弃用)函数,您可以手动使用它。
然而,显式函数和隐式转换都需要存在类型的类标记,因此您可以使用假类标记,但是因为您在Scala中工作,所以您可以将类标记添加为你函数的隐含参数。