hadoop - 附加到 HDFS 中的文件 (CDH 5.4.5)

标签 hadoop hdfs cloudera-cdh

这里是 HDFS 的全新内容。

我有一小段代码来测试附加到文件:

val path: Path = new Path("/tmp", "myFile")
val config = new Configuration()
val fileSystem: FileSystem = FileSystem.get(config)
val outputStream = fileSystem.append(path)
outputStream.writeChars("what's up")
outputStream.close()

失败并显示此消息:

Not supported
java.io.IOException: Not supported
    at org.apache.hadoop.fs.ChecksumFileSystem.append(ChecksumFileSystem.java:352)
    at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:1163)

我查看了 ChecksumFileSystem.java 的源代码,它似乎被硬编码为不支持附加:

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

如何实现?有什么方法可以将默认文件系统更改为支持追加的其他实现吗?

最佳答案

事实证明,我需要实际运行一个真正的 hadoop namenode 和 datanode。我是 hadoop 的新手,没有意识到这一点。如果没有这个,它将使用您的本地文件系统,它是一个 ChecksumFileSystem,不支持追加。所以我关注了博文 here在我的系统上启动并运行它,现在我可以追加了。

关于hadoop - 附加到 HDFS 中的文件 (CDH 5.4.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32339602/

相关文章:

hadoop - 为什么不能从 YARN 请求超过 32 个内核来运行作业?

json - 在配置单元中配置对象时出错

shell - 如果 Hive 失败则停止 Bash 脚本

hadoop - 通过 '1 Click Installer'更新Community Edition中的各个CDH组件

hadoop - hive 或 impala 中没有加载表

scala - Apache Spark EOF 异常

azure - 在处理数据时如何在 Azure HDInsight 中实现数据分布

apache-spark - 为什么读取 parquet 文件时会出现 "is not a Parquet file"错误

hadoop - 不同的hadoop类型文件

hadoop - 带有 MR1 的 CDH5.2 中的 distcp2