我在几个地方读到,在Reducer中对值进行两次迭代的唯一方法是缓存该值。
但是,在这种情况下,所有值都必须适合主存储器是有一个限制的。
如果您需要迭代两次,但又没有足够的值(value)将值缓存在内存中怎么办?
有某种解决方法吗?
也许对此问题有一些答案,但是我是Hadoop的新手,所以我希望自提出问题以来就找到了一些解决方案。
具体来说,这是我需要做的:
需要保存从secondPoint到所有其他点的距离以及从thirdPoint到所有其他点的距离,因此可以执行其他步骤。
缓冲此距离并不是问题,因为每个距离都是两倍,而一个点实际上可能是n维空间中的一个点,因此每个点可能具有n个坐标,因此可能会占用太多空间。
我最初的问题是如何迭代两次,但我的问题更笼统,如何通过值迭代多次才能执行上述步骤?
最佳答案
它可能无法在每种情况下都起作用,但是您可以尝试运行更多的reducer,以便每个都处理少量的数据,然后可以将这些值缓存到内存中。
关于hadoop - 通过Reducer Hadoop中的值进行两次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268198/