MapReduce 新 API Job.getInstance(Configuration, String) 的 Jar 文件

sio*_*eep 5 java hadoop

已设置 Hadoop 2.2 . 尝试删除已弃用的 API

    Job job = new Job(conf, "word count");
Run Code Online (Sandbox Code Playgroud)

来自示例 Wordcount(随 Hadoop 一起提供)here

将弃用的 API 替换为

编辑:

    Job job = Job.getInstance(conf, "word count");
Run Code Online (Sandbox Code Playgroud)

编译错误是

Job.getInstance 无法解析为类型。

已经导入的 Job 类(旧 API 或 MR1)似乎没有这个方法。

哪个 jar 包含这个带有Job.getInstance(Configuratio,String)方法的新 Job 类

如何解决这个问题?迁移到 MapReduce v2 的示例是否有任何其他更改?

Ank*_*hag 1

Job.getInstance 无法解析为类型。

您收到错误消息是因为您的应用程序类路径中不存在所需的库。您需要hadoop-core*.jar类路径上存在文件才能解决此问题。

顺便问一下,哪个 jar 包含带有 Job.getInstance(Configuratio,String) 方法的新 Job 类

org.apache.hadoop.mapreduce.Job文件中包含的类hadoop-core-*.jar。jar 文件名将附加 hadoop 版本和供应商名称(cdh - Cloudera、hdf - hortenworks 等)

建议:

Job.getInstance()是静态 API,您无需创建 Job 类的实例即可访问它。有趣的是,getInstance()它用于创建 Job 类的新实例,如果您已经使用 usingnew关键字创建了一个实例,则无需getInstance再次调用。

Job job = new Job.getInstance(conf, "word count");用。。。来 代替Job job = Job.getInstance(conf, "word count");