java - Hadoop作业控制

标签 java hadoop mapreduce job-control

我正在尝试在 Hadoop 中运行多个 Map/Reduce 任务。在谷歌上搜索后,我按照 http://cloudcelebrity.wordpress.com/2012/03/30/how-to-chain-multiple-mapreduce-jobs-in-hadoop/ 中描述的方法 2 进行了操作。 : 使用作业控制。我收到以下错误:

/examples2/format/Dictionary.java:100: error: no suitable method found for addJob(org.apache.hadoop.mapreduce.Job)
jbcntrl.addJob(job);
       ^
method JobControl.addJob(org.apache.hadoop.mapred.jobcontrol.Job) is not applicable
      (actual argument org.apache.hadoop.mapreduce.Job cannot be converted to org.apache.hadoop.mapred.jobcontrol.Job by method invocation conversion)

Is it better to use the mapred or the mapreduce package to create a Hadoop Job? 所述,有两个不同的 API,它们在这里似乎错位了。进一步查看后,我发现JobControl and JofConf.setMapperClass() error .他们说使用 mapreduce 包 org.apache.hadoop.mapreduce.lib.jobcontrol.JobControl' 代替 'org.apache.hadoop.mapred.jobcontrol.JobControl 应该解决它。唯一的问题是:我正在使用它。当我查看这个特定文件 (hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/lib/jobcontrol/JobControl. java 在源代码中),我看到它正在使用

import org.apache.hadoop.mapred.jobcontrol.Job;

代替

import org.apache.hadoop.mapreduce.Job;

在我看来是哪个导致了错误(正确?)。除了将代码还原为 mapred 之外,还有什么办法可以解决这个问题吗?或者运行多个 M/R 作业的任何其他方式?

更新:我从 http://cloudcelebrity.wordpress.com/2012/03/30/how-to-chain-multiple-mapreduce-jobs-in-hadoop/ 得到了方法 1工作,但我仍然对问题的答案感兴趣。

最佳答案

mapred 是旧的 API 集。

请更改为 mapreduce 以编写更多 MR 程序。

  • mapreduce api 更紧凑并将大部分内容封装在上下文类中,使编码人员的工作变得简单

关于java - Hadoop作业控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25393018/

相关文章:

java - App Engine Mapreduce Java无法编译MapReduce Specification.of

mongodb - 如何在 map-reduce 数据库中实现引用?

java - Hadoop MapReduce 在 reducer 中访问 mapper 输出数

用于 Java Web 应用程序的 Java PaaS(平台即服务)(wicket - spring - hibernate/jpa - scala - jetty)

hadoop - pig 存储脚本失败

hadoop - 在配置单元中创建数据库时权限被拒绝错误

apache - 当在同一行中使用标量数据时,Hive 在计算功能组(Max,Min..)时如何定义组?

java - Android AsyncTask doInBackground 适用于 1 部手机,但不适用于其他手机

java - JNLP 文件始终从缓存中下载,即使文件在服务器中发生更改也是如此

java - 使用 GroovyShell 从 Java 代码运行脚本