如何附加到Hadoop用户程序中的现有文件?
我有一个Hadoop程序,当映射和缩减阶段完成时,我需要附加到一个现有的文件(已经在HDFS上)。我该怎么做呢?hadoop 0.20.2之后,已经支持在hdfs上附加文件,更多信息可供使用,并且 我发现的一个附加示例可能会帮助您:如何附加到Hadoop用户程序中的现有文件?,hadoop,mapreduce,Hadoop,Mapreduce,我有一个Hadoop程序,当映射和缩减阶段完成时,我需要附加到一个现有的文件(已经在HDFS上)。我该怎么做呢?hadoop 0.20.2之后,已经支持在hdfs上附加文件,更多信息可供使用,并且 我发现的一个附加示例可能会帮助您: FSDataOutputStream stm = fs.create(path, true, conf.getInt("io.file.buffer.size", 4096), (short)3, bl
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();
hadoop 0.20.2之后,已经支持在hdfs上附加文件,更多信息可用,并且 我发现的一个附加示例可能会帮助您:
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);
}
您可以使用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);
}
此外,还有一些关于fsync()操作的讨论可能会导致HDFS不稳定,例如延迟响应。此外,还有一些关于fsync()操作的讨论可能会导致HDFS不稳定,例如延迟响应。