无法在Java中使用XmlInputFormat扩展TextInputFormat

时间:2012-03-15 06:27:31

标签: java hadoop extends word-count

我正在尝试使用Hadoop进行WordCount。我想使用XmlInputFormat.class在XML标记上拆分文件。 XmlInputFormat.class是here

XmlInputFormat.class从TextInputFormat.class扩展

 Job job = new Job(getConf());
 job.setInputFormatClass(XmlInputFormat.class);

显示错误

  

Job类型中的setInputFormatClass(Class)方法不适用于参数(Class)

但是当我使用

时它没关系
Job job = new Job(getConf());
job.setInputFormatClass(TextInputFormat.class);

为什么我们不能使用延伸的?或者我做错了什么?

3 个答案:

答案 0 :(得分:0)

这看起来像是您的Hadoop版本的问题。您是否检查过您使用的XMLInputFormat类实际上是否适合您的Hadoop版本?

答案 1 :(得分:0)

我认为使用mapred库的hadoop教程已经过时了,应该看看:

http://wiki.apache.org/hadoop/WordCount

在稍微修改上面的代码后,我可以成功运行XMLInputFormat。


请忽略此答案。我认为原因是因为我使用的是已弃用的map reduce版本,它使用mapred。*。

我遇到了同样的问题,当我修改了其中一个导入时它就解决了:

自: import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;

要: import org.apache.hadoop.mapred.TextInputFormat;

答案 2 :(得分:0)

可能是您在代码中导入了错误的XmlInputFormat.class。同样的事情发生在我的TextInputFormat.class上,看到我正在使用eclipse自动拔出的类的错误导入。要导入的正确类是:

org.apache.hadoop.mapreduce.lib.input.TextInputFormat;