gpt4 book ai didi

hadoop - HDFS 使用 libhdfs 在 0.23.5 中追加

转载 作者:可可西里 更新时间:2023-11-01 14:59:28 27 4
gpt4 key购买 nike

我正在尝试 append 到版本 0.23.5 上的 hdfs 文件。我在 hdfs-site.xml 中将属性 dfs.support.append 设置为 true。调用 hdfsWrite() 时出现以下错误,表示不支持追加。

线程“main”中的异常 java.io.IOException:不支持
在 org.apache.hadoop.fs.ChecksumFileSystem.append(ChecksumFileSystem.java:345)
在 org.apache.hadoop.fs.FileSystem.append(FileSystem.java:1046)
调用 org.apache.hadoop.conf.FileSystem::append((Lorg/apache/hadoop/fs/Path;)Lorg/apache/hadoop/fs/FSDataOutputStream;) 失败!

我查看了过去关于在 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;
}

我错过了什么吗?

谢谢。

最佳答案

FSDataOutputStream 不支持追加方法。这是相关的来源:

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

您会注意到它的父类(super class) FileSystem 指出 append 是一个可选方法。

关于hadoop - HDFS 使用 libhdfs 在 0.23.5 中追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com