hadoop—如何将大量数据从java写入hdfs

rseugnpd  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(378)

我们的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文件期间或在每个时间间隔或特定数量的记录时使数据可用?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题