值未写入HDFS文件



我正在尝试将值写入HDFS上的文件中。这是代码:

FileSystem fsys = FileSystem.get(new Configuration());
        String fileName = "/user/root/TestData/Parameter.txt";
        Path path = new Path(fileName);//(pathOfTestFile);    
//fstatus.getPath();
        FSDataOutputStream fos = null;
        try {
            fos = fsys.create(path);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        BufferedWriter writer = new BufferedWriter(new 
OutputStreamWriter(fos));
        writer.write(iterations);
        writer.close();
        fos.close();

但是,我看到命令hadoop-fs-ls显示的大小为4,但当我执行hadoop-fs-cat时,该文件不会显示任何内容。

我假设迭代是一个整数/短/字节。无论哪种方式,这些值的字节表示都是零或更多0x00字节,后面跟着0x04字节。0x00和0x04都不是可打印字符,因此hadoop fs -cat在输出中不显示任何内容也就不足为奇了。

如果你把输出管道到hexdump-C,我想你会看到你的输出:

hadoop fs -cat /path/to/file | hexdump -C

编辑

您还使用了BufferedWriter.write(int),它实际上将int作为chaarcter写入。您应该使用FSDataOutputStream.writeInt(迭代)(它实际上是DataOutputStream的一个方法),然后使用FSDataInputStream.readInt()再次读取它。

相关内容

  • 没有找到相关文章

最新更新