1

I am trying to do a WordCount using Hadoop. I want to use XmlInputFormat.class to split the file base on XML tag. The XmlInputFormat.class is here

XmlInputFormat.class is extends from TextInputFormat.class

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

It shows the error

The method setInputFormatClass(Class) in the type Job is not applicable for the arguments (Class)

But it's OK when I use

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

Why can't we use the extends one? Or did I do something wrong?

4

3 回答 3

0

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

于 2012-03-15T21:49:53.787 回答
0

可能是您在代码中导入了错误的 XmlInputFormat.class。TextInputFormat.class 也发生在我身上,看到我使用了 Eclipse 自动退出的错误的类导入。要导入的正确类是:

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

于 2014-08-17T10:31:33.720 回答
0

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

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

对上面的代码稍作修改后,我就可以成功运行 XMLInputFormat 了。


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

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

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

至:导入 org.apache.hadoop.mapred.TextInputFormat;

于 2012-03-29T18:39:13.203 回答