在map-reduce输出中重复"keys"?



众所周知,要么这个

public static class SReducer extends MapReduceBase implements Reducer<Text, Text, Text, Text>
     {
        public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) throws IOException
        {
            StringBuilder sb = new StringBuilder();
            while (key.hasNext()) 
            {
                sb.append(key.next().toString());   
            }
            output.collect(key, new Text(sb.toString()));
        }
     }

public static class Reduce extends MapReduceBase implements Reducer<Text, Text, Text, Text> 
    {
        public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter) throws IOException 
        {
            boolean start = true;
            StringBuilder sb = new StringBuilder();
            while (values.hasNext()) 
            {
                if(!start)
                {
                start=false;
                sb.append(values.next().toString());
                }           
            }
            output.collect(key, new Text(sb.toString()));
        }
    }

这就是我们用来消除输出中重复"值"的化简器函数。但是我应该怎么做才能消除重复的"键"呢?知道吗?谢谢。

PS:更多信息:在我的<键中,值>对,键包含链接,值包含单词。但是在我的输出中,每个单词只出现一次,但我得到许多重复的链接。

Reducer中,对于Reducer接收的每个唯一键,将有一个调用reduce()。它将接收该键的所有值。但是,如果您只关心键,并且只关心唯一键,那么,完全忽略值即可。每个密钥将只获得一个reduce();使用该(非重复)密钥执行任何操作。

相关内容

  • 没有找到相关文章

最新更新