2

ver 0.23.5 で hdfs ファイルに追加しようとしています。hdfs-site.xml でプロパティ dfs.support.append を true に設定しました。hdfsWrite() を呼び出すと、追加がサポートされていないことを示す次のエラーが表示されます。

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 に関する過去の文献を調べました。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;
}

何か不足していますか?

ありがとう。

4

1 に答える 1

0

FSDataOutputStream は追加メソッドをサポートしていません。関連するソースは次のとおりです。

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

そのスーパー クラス FileSystem は、append がオプションのメソッドであることを示していることに気付くでしょう。

于 2014-10-22T21:21:59.327 に答える