将RDD映射到Scala中的PairRDD

Eda*_*ame 4 java scala apache-spark rdd

我试图将RDD映射到scala中的pairRDD,所以我可以稍后使用reduceByKey.这是我做的:

userRecords是org.apache.spark.rdd.RDD [UserElement]

我尝试从userRecords创建一个pairRDD,如下所示:

val userPairs: PairRDDFunctions[String, UserElement] = userRecords.map { t =>
  val nameKey: String = t.getName()
  (nameKey, t)
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到了错误:

类型不匹配; 发现:org.apache.spark.rdd.RDD [(String,com.mypackage.UserElement)]必需:org.apache.spark.rdd.PairRDDFunctions [String,com.mypackage.UserElement]

我在这里错过了什么?非常感谢!

Jus*_*ony 7

您不需要这样做,因为它是通过implicits(显式rddToPairRDDFunctions)完成的.任何类型的RDD都Tuple2[K,V]可以自动用作PairRDDFunctions.如果您真的想要,您可以明确地执行implicit操作并将RDD包装在PairRDDFunction:

val pair = new PairRDDFunctions(rdd)
Run Code Online (Sandbox Code Playgroud)