我正在使用 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_file
( tmp_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)
但没有写任何东西 .
我搜索并找到下面的设置:
我设置像这个图,并 Deplor Client Configuration
并重新启动所有服务 . 但没有改变......
我错了吗?