我在几个地方读到,在Reducer中迭代两次值的唯一方法是缓存这些值。
但是,在这种情况下,所有值都必须适合主存储器。
如果你需要迭代两次,但是你没有把这些值缓存在内存中,那该怎么办?
有某种解决方法吗?
也许有一些关于这个问题的答案,但我是Hadoop的新手,所以我自从问到问题以来找到了一些解决方案。
更具体地说,我的问题是,我需要做的是:
需要保存从secondPoint到所有其他点的距离以及从thirdPoint到所有其他点的距离,因此可以执行其他步骤。
缓冲这个距离不是问题,因为每个距离都是一个双倍,而一个点实际上可以是n维空间中的一个点,所以每个点都可以有n个坐标,所以它也可以占用很大的空间。
我最初的问题是如何迭代两次,但我的问题更为笼统,如何通过值迭代多次,以执行上述步骤?
答案 0 :(得分:0)
它可能不适用于所有情况,但您可以尝试运行更多的reducer,以便每个处理足够少的数据,然后您可以将值缓存到内存中。