Scala 从另一个RDD中减去一个RDD不';我不能正常工作
我想从另一个RDD中减去一个RDD。我查阅了文档,发现Scala 从另一个RDD中减去一个RDD不';我不能正常工作,scala,apache-spark,spark-graphx,Scala,Apache Spark,Spark Graphx,我想从另一个RDD中减去一个RDD。我查阅了文档,发现subtract可以做到这一点。实际上,当我测试subtract时,最终的RDD保持不变,并且没有删除值 还有其他功能可以做到这一点吗?还是我使用的减法不正确 以下是我使用的代码: val vertexRDD: org.apache.spark.rdd.RDD[(VertexId, Array[Int])] val clusters = vertexRDD.takeSample(false, 3) val clustersRDD: R
subtract
可以做到这一点。实际上,当我测试subtract
时,最终的RDD保持不变,并且没有删除值
还有其他功能可以做到这一点吗?还是我使用的减法不正确
以下是我使用的代码:
val vertexRDD: org.apache.spark.rdd.RDD[(VertexId, Array[Int])]
val clusters = vertexRDD.takeSample(false, 3)
val clustersRDD: RDD[(VertexId, Array[Int])] = sc.parallelize(clusters)
val final = vertexRDD.subtract(clustersRDD)
final.collect().foreach(println(_))
通常不支持或至少不建议使用可变类型(本例中为数组)执行集操作,如减法
尝试改用不可变类型
我相信是将数组存储在集合中的相关容器,但我不确定。如果您的rdd是由可变对象组成的,它将无法工作。。。问题是它也不会显示错误,所以这类问题很难识别,我昨天也遇到过类似的问题,我使用了一种变通方法
rdd.keyBy( someImmutableValue ) -> do this using the same key value to
both your rdds
val resultRDD = rdd.subtractByKey(otherRDD).values
最近,我尝试了2个RDD(数组列表)的减法运算,它正在工作。重要的一点是-RDD val after.subtract方法应该是要从中减去的列表,而不是相反
正确:val result=要减去的元素。减去(从列表中)
incorrect:val reuslt=fromList.subtract(您想要减去的元素)
(不会给出任何编译/运行时错误消息)我需要使用数组!我怎样才能解决这个问题?或者我可以使用的其他类型是什么?否则,我认为数组在Scala中是一种不可变的类型。@Omarmasoudi不,Array
与其他语言中的可变JVM数组一样。唯一的区别是,它在Scala中是不协变的(在Scala中是不变的)。@OphirYoktan啊,好的!非常感谢。当我使用Seq进行测试时,它可以工作!