使用javaapi在hadoop中将数据附加到文件中

twh00eeo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(387)

我创建了一个文件,其中包含一系列map reduce作业的结果。我做的程序迭代输出一些结果。我想使用javaapi将这些数据附加到结果文件中。我试过fs.append,但不起作用。目前我正在使用内置的java库(Eclipse4.2.2),当我可以使用debugin时,我会把它做成一个jar并将它放入集群中。
首先,hdfs是否接受“append”?如果是,有人能告诉我是怎么做的吗?提前通知。
我用来做这项工作的代码如下:

try{
    Path pt = new Path("/home/results.txt");
    FileSystem fs = FileSystem.get(new Configuration());
    BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fs.append(pt)));
    String line = "something";
    br.write(line);
    br.close();
} catch (Exception e) {
    System.out.println("File not found");
}
83qze16e

83qze16e1#

早期版本的hdfs不支持append操作。一旦文件被关闭,它是不可变的,只能通过使用不同的文件名编写新的副本来更改。
请在此处查看更多信息
如果你使用旧版本,这是我的工作。。。。。。

BufferedReader bfr=new BufferedReader(new InputStreamReader(hdfs.open(path)));     //open file first
            String str = null;
            BufferedWriter br=new BufferedWriter(new OutputStreamWriter(hdfs.create(path,true))); 
            while ((str = bfr.readLine())!= null)
            {
                br.write(str); // write file content
                br.newLine();
               System.out.println("   ->>>>>  "+str);
             }
            br.write("Hello     ");  // append into file
            br.newLine();
            br.close(); // close it

相关问题