我在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}}
答案 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
可以解决问题。