2

我需要将文件从一个 HDFS 目录移动到另一个 HDFS 目录。

我想检查是否有一些更简单的方法(一些 HDFS API)来完成相同的任务,除了 InputStream/OutputStream ?

我听说过,FileSystem.rename(srcDir, destDir);但不确定这是否会删除原始 src 目录。

我不想删除原始目录结构,只是将文件从一个文件夹移动到另一个目录。

例如

input Dir - /testHDFS/input/*.txt
dest Dir - /testHDFS/destination

移动文件后,目录应如下所示:-

input Dir - /testHDFS/input
dest Dir - /testHDFS/destination/*.txt

PS:我想在每个文件的映射器函数中实现这个工作。

任何帮助,将不胜感激。

4

3 回答 3

4

FileSystem.rename 会将文件从源目录移动到目标目录。我相信你可以用它来满足你的要求。

于 2013-11-07T06:25:10.140 回答
2

最好的方法是使用org.apache.hadoop.fs.FileUtil.copy(),将deleteSource参数设置为true。人们通常使用,但该功能会因为不可见的问题(例如源路径和目标路径位于不同的卷上)而FileSystem.rename()静默失败

于 2017-08-08T16:31:11.970 回答
0

您可以使用 DistCp 以编程方式验证这一点

于 2013-11-07T08:37:11.357 回答