Scala 火花对不工作

Scala 火花对不工作,scala,apache-spark,Scala,Apache Spark,valuesubtractByKey不是 org.apache.spark.rdd.rdd[(字符串,标签点)] valuejoin不是org.apache.spark.rdd.rdd[(字符串, 标签点)] 这是怎么发生的org.apache.spark.rdd.rdd[(字符串,LabeledPoint)]是对值rdd,我已经导入了import org.apache.spark.rdd.在spark shell中,它完全按照预期工作,无需导入任何内容: scala> case clas

value
subtractByKey
不是 org.apache.spark.rdd.rdd[(字符串,标签点)]

value
join
不是org.apache.spark.rdd.rdd[(字符串, 标签点)]


这是怎么发生的org.apache.spark.rdd.rdd[(字符串,LabeledPoint)]是对值rdd,我已经导入了
import org.apache.spark.rdd.
在spark shell中,它完全按照预期工作,无需导入任何内容:

scala> case class LabeledPoint(x: Int, y: Int, label: String)
defined class LabeledPoint

scala> val rdd1 = sc.parallelize(List("this","is","a","test")).map(label => (label, LabeledPoint(0,0,label)))
rdd1: org.apache.spark.rdd.RDD[(String, LabeledPoint)] = MapPartitionsRDD[1] at map at <console>:23

scala> val rdd2 = sc.parallelize(List("this","is","a","test")).map(label => (label, 1))
rdd2: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[3] at map at <console>:21

scala> rdd1.join(rdd2)
res0: org.apache.spark.rdd.RDD[(String, (LabeledPoint, Int))] = MapPartitionsRDD[6] at join at <console>:28
scala>case类LabeledPoint(x:Int,y:Int,label:String)
定义类标记点
scala>val rdd1=sc.parallelize(列表(“此”、“是”、“a”、“测试”)).map(标签=>(标签,标签点(0,0,标签)))
rdd1:org.apache.spark.rdd.rdd[(String,LabeledPoint)]=MapPartitionsRDD[1]位于map at:23
scala>val rdd2=sc.parallelize(列表(“此”、“是”、“a”、“测试”)).map(标签=>(标签,1))
rdd2:org.apache.spark.rdd.rdd[(String,Int)]=MapPartitionsRDD[3]位于map at:21
scala>rdd1.join(rdd2)
res0:org.apache.spark.rdd.rdd[(String,(LabeledPoint,Int))]=MapPartitionsRDD[6]位于连接处:28

你能添加一些代码吗?@carlosvillchez出于某种奇怪的原因,我必须从原始的键值对中创建一个pairrdfunctions对象。也许是因为界面改变了。因为新的pairdd函数定义为RDD[K,V],但没有定义为RDD[(K,V)]。但是,另一个RDD必须是RDD[(k,v)]。不管怎样,问题解决了。由于一些奇怪的原因,我不得不从原始的键值对中创建一个PairRDDFunctions对象。也许是因为界面改变了。因为新的pairdd函数定义为RDD[K,V],但没有定义为RDD[(K,V)]。但是,另一个RDD必须是RDD[(k,v)]。不管怎样,问题解决了。谢谢