使用python K-MEANS进行Hadoop流式传输

时间:2015-08-01 11:29:19

标签: hadoop hadoop-streaming

我想用hadoop map reduce和python做一个简单的k-means。

映射器获取点并将每个点映射到最近的中心。
减速器以中心为关键点并指向值并计算点的新中心。

但是现在,我需要从减速器中收集所有新的中心,并以某种方式将它们提供给映射器 在下一轮。

我该怎么办?我需要为每个地图任务建立一个全局数组中心。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

有关如何编码全局常量的信息,请参阅this question

映射

<强>接受

  • 数据
  • 表示中心列表的全局常量

<强>计算

  • 每个数据实例最近的中心

<强>可发出

  • 最近的中心()和点()。

减速

<强>接受

  • 中心实例/坐标​​(
  • 分(

<强>计算

  • 基于群集的新中心

<强>可发出

  • 新中心

您将提供下一个K-Means时代:

  1. 来自您最初的纪元的相同数据
  2. 从reducer发出的中心作为全局常量
  3. 重复直到满足您的停止标准。