我正在使用 CDH-5.14.2-1.cdh5.14.2.p0.3 . 我试图将一些String附加到HDFS上的现有文件中 .

然后我写了如下:

FileSystem fs = FileSystem.get(conf);
String str = "testtest";
FSDataOutputStream out = fs.append(new Path("tmp/tmp_file"));
InputStream in = new ByteArrayInputStream(str.getBytes("utf-8"));
byte[] b = new byte[1024];
int numBytes = 0;
while ((numBytes = in.read(b)) > 0) {
   out.write(b, 0, numBytes);
}

没有错误,但没有写入 tmp_filetmp_file 是一个空白文件) . 我使用 fs.create(path) 创建 tmp_file 另一个方法,因此创建了 tmp_file 但是追加不顺利 .

我已经阅读了一些帖子,我意识到属性 dfs.support.append 必须是 true . 所以我搜索了Cloudera经理,但我找不到 . 相反,我写了 conf.set("dfs.support.append", "true") ,但它毫无意义 .

我用 IOUtils.copyBytes(in, out, 4096, true)out.writeBytes(String tmp) 但没有写任何东西 .

我搜索并找到下面的设置:
setting

我设置像这个图,并 Deplor Client Configuration 并重新启动所有服务 . 但没有改变......

我错了吗?