Scala 如何解决SPARK-5063问题;这个RDD缺少一个SparkContext;?
我使用的是Scala 2.12.7和Spark 2.4.3,我有一个算法可以使用Scala 如何解决SPARK-5063问题;这个RDD缺少一个SparkContext;?,scala,apache-spark,Scala,Apache Spark,我使用的是Scala 2.12.7和Spark 2.4.3,我有一个算法可以使用RDD[(List[Double],String)] 其中modelKnn是一个RDD[(列表[Double],字符串)] 然而,这种方法给了我一个错误“这个RDD缺少SparkContext”,据我所知,它与嵌套的RDD操作有关 有没有办法避免这个问题,并且仍然能够进行并行计算 如果我使用testVector.collect().toList在列表中转换testVector,我不再有同样的问题,但这也意味着放弃并行
RDD[(List[Double],String)]
其中modelKnn
是一个RDD[(列表[Double],字符串)]
然而,这种方法给了我一个错误“这个RDD缺少SparkContext”,据我所知,它与嵌套的RDD操作有关
有没有办法避免这个问题,并且仍然能够进行并行计算
如果我使用
testVector.collect().toList
在列表中转换testVector
,我不再有同样的问题,但这也意味着放弃并行分类每个点的可能性。可能是因为您正在执行操作.first()。\u 1
内部转换testVector.map
,检查:通过删除您提到的内容,我仍然得到“MapPartitionsRDD:Spark不支持嵌套RDD(请参阅Spark-5063)”
def classifyPoint(point: List[Double], data: RDD[(List[Double], String)], k: Int): String =
{
val sortedDistances = data.map{case (a, b) => (b, Util.euclideanDistance(point, a))}.sortBy(_._2, ascending = true)
val topk = sortedDistances.zipWithIndex().filter(_._2 < k)
val result = topk.map(_._1).map(entry => (entry._1, 1)).reduceByKey(_+_).sortBy(_._2, ascending = false).first()._1
//for debugging purposes, remember to remove
println(s"Point classified as ${result}")
result
}
val classificationKnn = testVector.map(knnSpark.classifyPoint(_, modelKnn, k))