Map Reduce Hadoop中的倒置列表

时间:2015-12-16 20:05:55

标签: java python hadoop

我正在尝试修改此代码以生成完整的反向列表。我的意思是,获取文件位置中每个单词的索引。也就是说,如果我们有两个包含单词

的文件
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中做到这一点。有帮助吗?

1 个答案:

答案 0 :(得分:0)

关于你的问题的一些想法。

输入格式:

TextInputFormat使用输入文件的每一行作为输入记录。因此,您应该使用输入格式,将整个文件的访问权限作为一个输入记录。例如,您可以使用此WholeFileRecordReader

<强>映射器:

Mapper应该返回有关输入记录中每个单词的信息。返回键是单词,返回值是包含输入文件和文件中当前单词位置的任何结构。您可以编写自己的Writable类或将此信息合并到字符串中,并像现在一样返回Text类。

<强>减速机:

Reducer应合并每个单词的信息。只需使用一个键遍历传递给reducer的所有值,然后以您描述的格式生成结果字符串。