我正在使用hadoop计算单词之间的共现相似度。我有一个由共现单词对组成的文件,看起来像:
a b
a c
b c
b d
我使用的是一种基于图形的方法,将单词视为节点,同时出现的单词之间有一条边。我的算法需要计算所有节点的度。我成功地写了一本书 Map-Reduce
计算总学位的作业,输出以下内容:
a 2
b 3
c 2
d 1
目前,输出被写回一个文件,但我想要的是将结果捕获到一个 java.util.HashMap
. i、 那么,你想用这个吗 HashMap
在另一个 Reduce
计算最终相似度的作业。
以下是我的问题:
是否可以在内存中捕获reduce job的结果( List
, Map
). 如果是,怎么做?
这是最好的方法吗?如果没有,我该怎么处理?
1条答案
按热度按时间fxnxkyjh1#
有两种可能:或者从分布式文件系统读取map/reduce任务中的数据。或者直接将其添加到分布式缓存中。我刚在谷歌上搜索了分布式缓存的大小,它可以控制:
“local.cache.size参数控制distributedcache的大小。默认设置为10 gb。”
链接到cloudera博客
因此,如果您将第一个作业的输出添加到第二个作业的分布式缓存中,我认为应该可以。数以万计的条目远未达到千兆字节的范围。
将文件添加到分布式缓存的步骤如下:
要读入Map器:
要添加到dbcache:
当你准备第二份工作的时候。
让我知道这是否有用。