当前位置:  开发笔记 > 编程语言 > 正文

将数据附加到HDFS Java中的现有文件

如何解决《将数据附加到HDFSJava中的现有文件》经验,为你挑选了1个好方法。

我无法将数据附加到HDFS中的现有文件中.我希望如果文件存在然后附加一行,如果没有,创建一个名称给定的新文件.

这是我写入HDFS的方法.

if (!file.exists(path)){
   file.createNewFile(path);
}

FSDataOutputStream fileOutputStream = file.append(path); 
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
br.append("Content: " + content + "\n");
br.close();

实际上这个方法写入HDFS并创建一个文件,但正如我所提到的那样没有追加.

这是我测试我的方法的方法:

RunTimeCalculationHdfsWrite.hdfsWriteFile("RunTimeParserLoaderMapperTest2", "Error message test 2.2", context, null);

第一个参数是文件的名称,第二个参数是消息,另外两个参数不重要.

所以任何人都知道我错过了什么或做错了什么?



1> Mikhail Golu..:

实际上,您可以附加到HDFS文件:

从Client的角度来看,append操作首先调用DistributedFileSystem的append,这个操作会返回一个流对象FSDataOutputStream out.如果客户端需要将数据附加到此文件,它可以调用out.write来编写,并调用out.close来关闭.

我检查了HDFS源,有DistributedFileSystem#append方法:

 FSDataOutputStream append(Path f, final int bufferSize, final Progressable progress) throws IOException

有关详细信息,请参阅文稿.

您还可以通过命令行追加:

hdfs dfs -appendToFile  ... 

直接从stdin添加行:

echo "Line-to-add" | hdfs dfs -appendToFile - 

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有