HDFS使用libhdfs追加到0.23.5

时间:2013-01-16 03:09:33

标签: hadoop append hdfs

我试图附加到版本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;
}

我错过了什么吗?

感谢。

1 个答案:

答案 0 :(得分:0)

FSDataOutputStream不支持append方法。以下是相关来源:

  public FSDataOutputStream append(Path f, int bufferSize, Progressable progress) throws IOException {
    throw new IOException("Not supported");
  }

你会注意到它的超类FileSystem注意到append是一个可选的方法。