已安装hadoop 2.2。正在尝试删除不推荐使用的api
Job job = new Job(conf, "word count");
下面是wordcount示例(hadoop附带)
将不推荐使用的api替换为
编辑:
Job job = Job.getInstance(conf, "word count");
编译错误为
无法将job.getinstance解析为类型。
已经导入的作业类(旧api或mr1)似乎没有此方法。
哪个jar包含这个新的job类 Job.getInstance(Configuratio,String)
方法
如何解决?要迁移到mapreduce v2,该示例是否还有其他更改?
6条答案
按热度按时间eh57zj3b1#
我是如何通过添加hadoop核心作为依赖项来解决这个问题的。我只指定了hadoop common。
qni6mghb2#
试试job=job.getinstance(conf,“字数”);change to job=新作业(conf);
but5z9lq3#
在我的例子中,我对job类使用了错误的import语句。
确保您正在使用
import org.apache.hadoop.mapreduce.Job;
6tdlim6h4#
如果您使用的是旧的mapreduce api,请继续使用
new Job()
创建示例。如果已迁移到新的api,请使用Job job = Job.getInstance(conf, "word count");
drnojrws5#
用这个换
或者
mwkjh3gx6#
无法将job.getinstance解析为类型。
收到错误消息的原因是,应用程序类路径上不存在所需的库。你需要
hadoop-core*.jar
类路径上存在文件以解决此问题。顺便问一下,哪个jar包含这个带有job.getinstance(configuratio,string)方法的新作业类
这个
org.apache.hadoop.mapreduce.Job
包含在中的类hadoop-core-*.jar
文件。jar文件名将由hadoop版本和供应商名称(cdh-cloudera、hdf-hortenworks等)附加建议:
Job.getInstance()
是一个静态api,您无需创建作业类的示例即可访问它。有趣的是,getInstance()
用于创建作业类的新示例,如果已经使用new
关键字,您不需要呼叫getInstance
再一次。替换
Job job = new Job.getInstance(conf, "word count");
与Job job = Job.getInstance(conf, "word count");