我们的Java应用程序生成大量数据(长时间运行的程序),但无法有效地存储数据。
Public class HDFSWriter {
FSDataOutputStream out = null;
FileSystem fs = null;
Configuration conf = null;
static int linescounter = 0;
void CreateHDFSFile() {
Path filePath = new Path("filename.CSV");
conf = new Configuration();
fs = FileSystem.get(conf);
out = fs.create(filePath);
}
void writeHDFSFile(String csvLine) {
out.writeBytes(csvLine);
linescounter++;
if(linescounter>=500) {
linescounter=0;
out.writeBytes(csvLine);
//out.hsync();
//out.hflush();
}
}
void close() {
fs.close();
}
}
CreateHDFSFile
方法被称为程序的开始。
writeHDFSFile
方法。
close
方法。
即使我调用hsync
或hflush
,数据也不会出现在HDFS中。它只在完成整个程序之后出现,即在fs.close()
之后出现。
如何在HDFS文件中创建数据,或者创建每个时间间隔或特定数量的记录?