Spark - 在循环中访问RDD时出现酸洗错误

时间:2017-10-18 19:06:06

标签: python apache-spark pyspark

我在Spark中实现了k-means算法。当我运行下面的代码时,我得到一个酸洗错误(如下所示)。如果我修改它并将所有内容放在循环之外,它将正确计算质心。

    let loader;
    if(info.isScene) { 
      loader = new THREE.ObjectLoader();
      loader.load(this.path + info.path, (obj) => {
        this.scene.add(obj);
      });
    }else {
      loader = new THREE.JSONLoader();
      loader.load(this.path + info.path, (geometry, materials) => {
        this.b2mesh = new THREE.Mesh(geometry, materials);
        this.b2mesh.normalsNeedUpdate = true;
        this.meshCurrentRotation = this.b2mesh.rotation;
        this.scene.add(this.b2mesh);
        this.onReady(info);
      });
    }

错误如下:

{{1}}

1 个答案:

答案 0 :(得分:1)

SPARK-5063&#34中所述; Spark不支持嵌套RDD"。您正试图通过centroids RDD上的map访问sig_vecs RDD}:

docs = sig_vecs.map(lambda x: k_means.classify_docs(x, centroids))

centroids转换为本地收藏集(collect?)并调整classify_docs可以解决问题。