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的人)。感谢回答他的问题,我将删除我的,听起来好像我太离谱了谢谢!