我将为kmeans算法编写一个映射器和reducer,我认为最好的做法是将距离计算器放入mapper并发送到reducer,其中cluster id作为键,行坐标作为值。在 reducer 中,将执行更新质心。我是用python写的。
如您所知,我必须使用 Hadoop 流在STDIN
和之间传输数据STOUT
。据我所知,当我们print (key + "\t"+value)
,它会被送到减速机。Reducer 将接收数据并计算新的质心,但是当我们打印新的质心时,我认为它不会将它们发送到映射器以计算新的集群,它只是将其发送到STDOUT
并且如您所知,kmeans 是一种迭代算法。所以,我的问题是 Hadoop 流是否会遭受迭代程序的影响,我们应该MRJOB
为迭代程序使用吗?