gpt4 book ai didi

hadoop - K-Means 算法 Hadoop

转载 作者:可可西里 更新时间:2023-11-01 14:47:34 26 4
gpt4 key购买 nike

我正在 Hadoop(旧 API)上实现 K-Means 算法,但我陷入了无法弄清楚如何进一步进行的地步。

到目前为止我的逻辑是:

维护两个文件质心和数据。

  • 第 1 步:读取质心文件并将此数据存储在一些list(ArrayList)中。
  • 第 2 步:然后通过映射器读取数据文件,因为它会逐行扫描,然后将此值与列表中已存储的质心进行比较。
  • 第三步:输出相应的centroid & data给reducer。
  • 第 4 步:Reducer 将处理新质心并将其与数据一起发出。

我的问题

  1. 我的流程是否正确?
  2. 先将质心文件存储在某个集合中然后再继续处理是否正确?
  3. 如果我采用方法 (2),那么我的问题是如何将这个质心文件存储在某个集合中,因为映射函数将逐行扫描文件,所以如何在对数据文件运行映射器之前先扫描这个质心文件?
  4. 处理此质心文件功能的更好方法应该是什么?

最佳答案

  1. 在我看来,您的流程几乎没问题。您不应该“读取”您的数据文件,您应该只是将其指定为您对 hadoop 程序的输入。除此之外,虽然并不总是理想的 MapReduce/Hadoop 系统可以很好地执行迭代算法。只需确保将 reducer 的输出链接到 mapper 的输入即可。

  2. 是的,它是正确的,您可以使用分发缓存,或者只将文件存储在 hdfs 路径中。在映射器开始时读取质心文件可以在“setup”方法内部完成。

    public class MyMapper extends Mapper{    @Override    protected void setup(Context context){        //setup code.  Read in centroid file    }}
  3. 看我上面的代码,使用“setup”方法。

  4. 我认为质心文件很好,由于该文件非常小(除非您尝试拥有数百万个簇...),因此传递起来很简单(除非您尝试拥有数百万个簇...)

    <

关于hadoop - K-Means 算法 Hadoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16261209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com