如何在MapReduce作业中将文件添加到同一目录

时间:2014-11-06 13:09:08

标签: hadoop mapreduce hdfs

我有一个案例,每天都会执行几次MapReduce作业。我想要做的是将结果存储到相同的输出目录中。

我收到此错误:

org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory 

我不确定如何逐步存储到同一个文件夹中,是否有任何我可以查看的示例?

2 个答案:

答案 0 :(得分:0)

当您在hdfs中存储文件时,它会导致重复,因此您必须添加带文件名的timesatmp,以便根据时间戳添加填充。

添加filenam _ $(日期+"%Y-%m-%d-%S")

例如,

当我们使用commandLine

在hdfs中添加文件时
hadoop dfs -put inputfile /inputfile_$(date +"%Y-%m-%d-%S")

在hdfs中

hadoop dfs -ls /

-rw-r--r--   1 kishore supergroup          0 2014-11-06 22:28 /inputfile_2014-11-06-29

答案 1 :(得分:0)

你不能这样做。您想要这样做的通常原因是能够将结果随着时间的推移连接成后来的地图减少作业的输入。您可以通过选择根目录并在每次运行时写入唯一命名的子目录来实现。例如,在第一次运行时写入目录/ data / output / d001,在第二次运行时写入目录/ data / output / d02等。如果要将所有这些目录用作单个作业的输入,请设置/ data / output作为您的输入目录。