我在scala 0.9.0上运行k-means聚类,我试图理解数据如何在n个系统之间分配以计算k个中心数据点。
我理解k-means聚类是什么,但我想知道数据是如何划分的,并且计算是在分布式计算上完成的(map和reduce)。在此scala版本中,KMeansDataGenerator可以选择将数据点生成到n个分区中。每个从节点是否获得一个数据文件分区?
答案 0 :(得分:5)
KMeansDataGenerator
使用sc.parallelize
生成数据。 sc.parallelize
中有一个参数是分区号。您可以通过KMeansDataGenerator
选项进行更改。
之后,SparkKMeans
将在整个k-means算法中使用此分区编号。
每个从属节点是否获得一个数据文件分区?
Spark不保证分区的位置。但是,它会尝试将计算安排到最近的具有分区文件的节点。