如何将大量数据从Java写入HDFS

时间:2015-02-18 09:18:06

标签: hadoop hdfs

我们的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方法被称为程序的开始。

为每行插入HDFS文件调用

writeHDFSFile方法。

在程序结束时调用

close方法。

即使我调用hsynchflush,数据也不会出现在HDFS中。它只在完成整个程序之后出现,即在fs.close()之后出现。

如何在HDFS文件中创建数据,或者创建每个时间间隔或特定数量的记录?

0 个答案:

没有答案