我正在 Hadoop(旧 API)上实现 K-Means 算法,但我陷入了无法弄清楚如何进一步进行的地步。
到目前为止,我的逻辑是:
维护两个文件质心和数据。
- 第 1 步:读取质心文件并将这些数据存储在一些
list(ArrayList)
. - 第 2 步:然后通过映射器读取数据文件,因为它将逐行扫描,然后将此值与列表中已存储的质心进行比较。
- Step 3 : 将对应的centroid & data 输出到reducer。
- 第 4 步:Reducer 将处理新的质心并将其与数据一起发出。
我的问题
- 我的流程正确吗?
- 将质心文件首先存储在某个集合中然后继续进行是否是正确的方法?
- 如果我采用方法(2),那么我的问题是如何将这个质心文件存储在某个集合中,因为映射函数将逐行扫描文件,所以如何在数据文件上运行映射器之前先扫描这个质心文件?
- 处理此质心文件功能的更好方法应该是什么?