我正在尝试修改此代码以生成完整的反向列表。我的意思是,获取文件位置中每个单词的索引。也就是说,如果我们有两个包含单词
的文件find(:css, 'label[for=component_1]').click
我应该有这样的事情:
abc.txt = I am coming to the park to play, yes i am.
def.txt = Please come on over, i will be waiting for you
这意味着字母i是文件abc.txt中的第1个和第10个字以及文件def.txt中的第5个字
我修改了代码以提供“字位置和字频”,如下所示:
i /home/abc.txt: 1 10 /home/def.txt: 5
我知道它必须像Java一样使用一些索引,但我试着弄清楚如何在Hadoop Map Reduce中做到这一点。有帮助吗?
答案 0 :(得分:0)
关于你的问题的一些想法。
输入格式:
TextInputFormat使用输入文件的每一行作为输入记录。因此,您应该使用输入格式,将整个文件的访问权限作为一个输入记录。例如,您可以使用此WholeFileRecordReader。
<强>映射器:强>
Mapper应该返回有关输入记录中每个单词的信息。返回键是单词,返回值是包含输入文件和文件中当前单词位置的任何结构。您可以编写自己的Writable类或将此信息合并到字符串中,并像现在一样返回Text类。
<强>减速机:强>
Reducer应合并每个单词的信息。只需使用一个键遍历传递给reducer的所有值,然后以您描述的格式生成结果字符串。