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



我有一个Hadoop程序,当映射和缩减阶段完成时,我需要附加到现有文件(已经在HDFS上)。我该怎么做?

Hadoop 0.20.2之后已经支持在HDFS上附加文件,更多信息可在此处获得1和此处2

我找到的一个附加示例可能会对您有所帮助:

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();  

你可以使用 HDFS 的 append 方法,

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

例如:-

       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);
        }

相关内容

  • 没有找到相关文章

最新更新