如何附加到Hadoop用户程序中的现有文件?

时间:2013-11-12 18:20:02

标签: hadoop mapreduce

我有一个Hadoop程序,当映射和还原阶段完成时,我需要追加到现有文件(已经在HDFS上)。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

已经支持在hadoop 0.20.2之后在hdfs上附加文件,有更多信息here1here2

我发现的附加示例可能会对您有所帮助:

FSDataOutputStream stm = fs.create(path, true,  
              conf.getInt("io.file.buffer.size", 4096),  
              (short)3, blocksize);  
String a = make(1000);  
stm.write(a.getBytes());  
stm.sync();  

答案 1 :(得分:0)

您可以使用HDFS的追加方法,

检查文件是否存在,如果存在则将新内容附加到同一文件中。

例如: -

       FileSystem hdfs;
       FSDataOutputStream writeInFile;
       Path file;

       if (hdfs.exists(file)) {
            System.out.println("file exists");
            writeInFile = hdfs.append(file);
            writeInFile.writeBytes(data);
        }
        else {
            System.out.println("new file");
            writeInFile = hdfs.create(file, true);
            writeInFile.writeBytes(data);
        }