我有一个 Hadoop 程序,在其中完成映射和缩减阶段后,我需要附加到现有文件(已经在 HDFS 上)。我怎样才能做到这一点?
问问题
3104 次
2 回答
1
在 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();
于 2013-11-14T08:46:40.737 回答
0
您可以使用 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);
}
于 2017-06-30T08:51:04.813 回答