我试图附加到版本0.23.5上的hdfs文件。我在hdfs-site.xml中将属性dfs.support.append设置为true。调用hdfsWrite()时,我收到以下错误,说不支持append。
Exception in thread "main" java.io.IOException: Not supported
at org.apache.hadoop.fs.ChecksumFileSystem.append(ChecksumFileSystem.java:345)
at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:1046)
Call to org.apache.hadoop.conf.FileSystem::append((Lorg/apache/hadoop/fs/Path;)Lorg/apache/hadoop/fs/FSDataOutputStream;) failed!
我查看过去在hdfs中追加的文献。看起来像append应该在0.23.5中工作。
我可以插入和阅读。问题是当我尝试打开O_APPEND并写入文件时。以下是示例代码 -
int append(char *filepath, char *data, int size)
{
hdfsFS fs = hdfsConnect("default", 0);
int openFlags = O_WRONLY | O_APPEND;
hdfsFile fdData = hdfsOpenFile(fs, filepath, openFlags, 0, 0, 0);
if (!fdData)
return -1;
if (hdfsWrite(fs, fdData, data, size) == -1)
return -1;
hdfsCloseFile(fs, fdData);
return 0;
}
我错过了什么吗?
感谢。
答案 0 :(得分:0)
FSDataOutputStream不支持append方法。以下是相关来源:
public FSDataOutputStream append(Path f, int bufferSize, Progressable progress) throws IOException {
throw new IOException("Not supported");
}
你会注意到它的超类FileSystem注意到append是一个可选的方法。