【问题标题】:MapReduce Program in JavaJava 中的 MapReduce 程序
【发布时间】:2014-04-27 23:37:09
【问题描述】:

我有以下映射器

private Text sentiment = new Text();

public void map(LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter)
        throws IOException {

    String allPages = value.toString();
    String[] tokens = allPages.split(":::");

    for(int i=0;i<(tokens.length-1);i++)
    {
        String articleID="";
        sentiment.set(tokens[i].trim());
        articleID = tokens[0].trim();
        System.out.println("articleID "+articleID);
        Text articleIDValue = new Text(articleID); 
        output.collect(sentiment,articleIDValue);
    }
    String line = "";
    for(int j=1;j<tokens.length;j++){
        line = line + " "+tokens[j];
        System.out.println("line.... "+line);
    }
    Text lineText = new Text(line.trim());
    output.collect(new Text(tokens[0]),lineText);

}

示例输入:abc ::: 在一个充斥着科技 IPO 的市场中,这一次是不同的。 应该将 keyValue 对存储为(abc,在一个充斥着科技 IPO 的市场中,这个是不同的。)

现在这个存储为 (abc,abc).. 我哪里出错了?

【问题讨论】:

  • 一个键有多个值吗?为什么要做 output.collect(sentiment,articleIDValue);对于令牌 [0] ?你能给出一些 2-3 示例输入输出行吗?
  • 是的,我意识到我的错误。

标签: java eclipse hadoop mapreduce mapper


【解决方案1】:

我怀疑您看到的是第一个 collect() 调用的结果,其中键和值都是从令牌 [0](“abc”)设置的。

【讨论】:

  • 是的。我刚复查。我正在output.collect(sentiment,articleIDValue); 收集它。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多