我正在自己使用 Spark 实施k-means作为练习。为此,我需要比较id -> cluster_id
每一步的 2 张地图。目前,我通过收集它们并作为两个普通的 scala 地图进行比较来做到这一点。
有没有办法并行执行此操作?这值得么?
更新:
让我详细描述一下情况,从K-MEANS聚类算法开始(很简单)
- 从所有 N 个点中随机选择 K 个点,使它们成为质心。
- 将每个点分配给最近的质心(根据欧几里德距离)
- 重新计算质心,按指定的质心对所有点进行分组,计算这些点的平均值
- 如果重新计算生成的映射 (obj_id -> centroid_id) 不是上一步中的映射,则重复步骤 2-3
第 4 步是个问题。我需要将我在上一步中的映射与我现在的映射进行比较,这应该以某种方式并行完成,而不会在工作人员之间进行太多随机读取。