我正在尝试使用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);
为什么我们不能使用延伸的?或者我做错了什么?
答案 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;