我们的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` 方法为要插入到hdfs文件的每一行调用。 `close` 方法在程序结束时被调用。
即使我调用 `hsync` 或者 `hflush` ,数据未出现在hdfs中。它只在完整的程序完成后出现,即 `fs.close()` .
如何在创建hdfs文件期间或在每个时间间隔或特定数量的记录时使数据可用?
暂无答案!
目前还没有任何答案,快来回答吧!