1

我遇到的问题是 hadoop jar 命令需要输入路径,但我的 MapReduce 作业从数据库获取输入,因此不需要/有输入目录。我已将 JobConf 输入格式设置为 DBInputFormat,但是在影响我的工作时如何表示这一点?

//Here is the command
hadoop jar <my-jar> <hdfs input> <hdfs output>

我有一个输出文件夹,但不需要输入文件夹。有没有办法绕过这个?我是否需要编写第二个程序将数据库数据拉入文件夹,然后在 MapReduce 作业中使用它?

4

1 回答 1

5

hadoop jar 命令不需要命令行参数,可能除了主类。map/reduce 作业的命令行参数将由程序本身决定。因此,如果它不再需要 HDFS 输入路径,那么您需要将代码更改为不需要它。

public class MyJob extends Configured implements Tool
{
   public void run(String[] args) throws Exception {
     // ...
     TextInputFormat.setInputPaths(job, new Path(args[0])); // or some other file input format
     TextOutputFormat.setOutputPath(job, new Path(args[1]));
   }
}

因此,您将删除输入路径语句。JAR 完成这项工作并没有什么神奇之处,只需更改 InputFormat(您说您做了),您就应该设置好。

于 2013-10-07T22:14:15.323 回答