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