我有一个案例,MapReduce作业每天会执行几次。我想做的是将结果存储到相同的输出目录中。
我得到这个错误:
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory
我不确定我如何才能增量存储到同一个文件夹中,有什么例子可以看吗?
当您将文件存储在hdfs中时,它会导致重复,因此您必须添加带有文件名的timestamp,因此填充将根据时间戳添加。
添加filenam_$(日期+"%Y-%m-%d-%S")
例如
当我们使用命令行在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
你不能那样做。您想要这样做的通常原因是能够随着时间的推移将结果作为输入连接到稍后的map reduce作业中。您可以通过选择一个根目录并在每次运行时写入一个唯一命名的子目录来实现这一点。例如,第一次运行时写入目录/data/output/d001,第二次运行时输入目录/data/output/d02,等等。如果要将所有这些目录用作单个作业的输入,请将/data/out设置为输入目录。