我需要将文件从一个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函数中实现这个功能。
任何帮助都将不胜感激。
3条答案
按热度按时间iibxawm41#
最好的办法就是
org.apache.hadoop.fs.FileUtil.copy()
,设置deleteSource
参数到true
. 人们通常使用FileSystem.rename()
,但该函数将因不可见的问题(例如源路径和目标路径位于不同的卷上)而静默失败fdbelqdn2#
filesystem.rename将文件从源目录移动到目标目录。我相信你可以用它来满足你的要求。
yv5phkfx3#
您可以使用distcp以编程方式验证这一点