Scala 错误:值联接不是org.apache.spark.rdd.rdd[(Long,U)]的成员?

Scala 错误:值联接不是org.apache.spark.rdd.rdd[(Long,U)]的成员?,scala,apache-spark,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)] = res

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

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)
:52:错误:value join不是org.apache.spark.rdd.rdd[(Long,U)]的成员
val combined=expectedIndexValue.join(resultIndexValue)

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


但是,显式函数和隐式转换都要求类型的类标记存在,因此可以使用假类标记,但是,由于您使用的是Scala,您也可以将类标记作为隐式参数添加到函数中。

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


然而,显式函数和隐式转换都要求类型的类标记存在,因此您可以使用假类标记,但由于您使用的是Scala,您最好将类标记作为隐式参数添加到函数中。

您刚才和我同时回答,那么他在为Scala运行Spark解释器?他不需要给sc打电话吗?还是他的方法合理?很高兴删除我的答案,如果我的答案有点离谱,谢谢,这就是scala的语法。我明白了,但他不需要在某个地方调用sc来创建RDD吗?是的,在某个时候,他需要使用spark上下文来创建RDD。然而,这一部分与问题并不相关(而且如果这是为库创建的,那么它可能只是通过RDD,最终用户是预期创建RDD的人)。感谢回答他的问题,我将删除我的,听起来好像我太离谱了谢谢!你刚才和我同时回答,所以他在为Scala运行Spark解释器?他不需要给sc打电话吗?还是他的方法合理?很高兴删除我的答案,如果我的答案有点离谱,谢谢,这就是scala的语法。我明白了,但他不需要在某个地方调用sc来创建RDD吗?是的,在某个时候,他需要使用spark上下文来创建RDD。然而,这一部分与问题并不相关(而且如果这是为库创建的,那么它可能只是通过RDD,最终用户是预期创建RDD的人)。感谢回答他的问题,我将删除我的,听起来好像我太离谱了谢谢!