2013-04-06 75 views
0

我使用Hadoop 0.21.0。我想输出到两个不同的文件,所以我试图让MultipleOutputs工作。这里是我的降低:Hadoop的MultipleOutputs抛出“找不到符号”

public static class Reduce extends MapReduceBase implements Reducer < Text, Text > { 
    private MultipleOutputs mos; 
    public void configure(JobConf conf) { 
    mos = new MultipleOutputs(conf); 
    } 
    public void reduce(Text key, Iterator <Text> values, OutputCollector < Text, Text > output, Reporter reporter) throws IOException { 
    mos.getCollector("A", reporter).collect(key, new Text("Hello")); 
    mos.getCollector("B", reporter).collect(key, new Text("Bye")); 
    mos.getCollector("C", reporter).collect(key, new Text("Chau")); 
    } 
    public void close() throws IOException { 
    mos.close(); 
    } 
} 

但是当我尝试编译此我得到这些错误:

Main.java:41: error: cannot find symbol 
     private MultipleOutputs mos; 
       ^
    symbol: class MultipleOutputs 
    location: class Reduce 

Main.java:45: error: cannot find symbol 
      mos = new MultipleOutputs(conf); 
        ^
    symbol: class MultipleOutputs 
    location: class Reduce 

虽然我加入了这一点:import org.apache.hadoop.mapred.*; 在代码的开头。

谁能告诉我为什么我得到这些错误? 我该如何解决这个问题?

回答

0

Cannot find symbol错误往往与在你的类路径中的多个类,迷惑在编译时,编译器,当你知道你已经导入的类库相关联。

这里有其他人谁遇到类似的问题: cannot find symbol

+0

谢谢您的回答。我添加了import org.apache.hadoop.mapred.lib。*;和它一起工作警告!很奇怪,因为我已经加入进口org.apache.hadoop.mapred *。 – 2013-05-12 18:14:11