如何在具有MultipleInputs的Mapper中获取文档ID

时间:2013-05-20 12:55:22

标签: java hadoop mapreduce tf-idf

我正在使用Java中的Hadoop(没有Pig或Hive)编写TF-IDF用于学习目的。我将把它分成三轮:字数,每个文档的字数和最后每个字的docCount。

我认为主要的工作链是正确的,但是我在开始时遇到了一个问题:在我的第一轮中,如何在映射器中获取文档ID?我有以下多个输入:

    Path doc1 = new Path(System.getProperty("user.dir") + "/1.dat");
    Path doc2 = new Path(System.getProperty("user.dir") + "/2.dat");
    Path doc3 = new Path(System.getProperty("user.dir") + "/3.dat");
    MultipleInputs.addInputPath(job1, doc1, TextInputFormat.class, MapperRoundOne.class);
    MultipleInputs.addInputPath(job1, doc2, TextInputFormat.class, MapperRoundOne.class);
    MultipleInputs.addInputPath(job1, doc3, TextInputFormat.class, MapperRoundOne.class);
  • 第1轮:
  • Mapper {docID => [字]} - > {[word,docID] => 1}
  • Reducer {[word,docId] => [1,1,...]} - > {[word,docId] => }的wordCount

我显然可以将每个输入设置为不同的映射器,并对docID进行硬编码,这显然不是通用的。怎么做?

1 个答案:

答案 0 :(得分:1)