如何在hadoop hdfs目录中移动文件?

qjp7pelc  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(682)

我需要将文件从一个hdfs目录移到另一个hdfs目录。
我想看看除了inputstream/outputstream之外,是否有更简单的方法(一些hdfsapi)来实现相同的任务?
我听说过 FileSystem.rename(srcDir, destDir); 但不确定这是否会删除原始src目录。
我不想删除原来的目录结构,只把文件从一个文件夹移到另一个目录。
例如

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

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

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

ps:我想在每个文件的mapper函数中实现这个功能。
任何帮助都将不胜感激。

iibxawm4

iibxawm41#

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

fdbelqdn

fdbelqdn2#

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

yv5phkfx

yv5phkfx3#

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

相关问题