1

我想 jun 一个自定义 jar,其主类是一系列 map reduce 作业,第一个作业的输出作为第二个 jar 的输入,依此类推。

我在 FileOutputFormat.setOutputPath("what path should be here?"); 中设置什么

如果我在参数中指定 -outputdir,则会收到错误 FileAlraedy 存在。如果我不指定,那么我不知道输出将落在哪里。我希望能够看到链式 mapreduce 作业的每个作业的输出。

谢谢你的建议。请帮忙!

4

2 回答 2

0

好的做法是从命令行获取输出,因为它会增加代码的灵活性并且您只需编译一次 jar,前提是更改与您的路径相关。如果您启动集群并编译您的 jar,则适用于 EMR

例如。

dfs_ip_folder=HDFS_IP_DIR
dfs_op_folder=HDFS_OP_DIR
hadoop jar hadoop-examples-*.jar wordcount ${dfs_ip_folder} ${dfs_op_folder} 

注意:您必须创建 dfs_ip_folder 并将输入数据存储在其中。dfs_op_folder 将在 HDFS 而不是本地文件系统上自动创建 要访问 HDFS op 文件夹,您可以将其复制到本地文件系统,也可以执行 cat。例如。

hadoop fs -cat ${dfs_op_folder}/<file_name>
hadoop fs -copyToLocal ${dfs_op_folder} ${your_local_input_dir_path}
于 2013-10-18T17:35:08.343 回答
0

您可能会收到“FileAlraedy 存在”错误,因为该输出目录在您运行的作业之前存在。确保删除您指定为 Hadoop 作业输出的目录;否则您将无法运行这些作业。

于 2013-06-04T19:36:22.077 回答