我使用这个链接中的示例将内容从hdfs中的一个目录复制到hdfs中的另一个目录。文件的复制是可行的,但是它在目标目录中创建了一个新的子目录,而不是仅仅将文件复制到目标目录。例子:
Path source=new Path("hdfs://HANameService/sources/hpm_support/apc_code/");
Path target=new Path("hdfs://HANameService/staging/hpm_support/apc_code/");
FileSystem fs = source.getFileSystem(conf);
FileUtil.copy(fs, source, fs, target, true, conf);`
所以不是把文件复制到 hdfs://HANameService/staging/hpm_support/apc_code
它在apc\u代码下创建了一个新的dir,文件以 hdfs://HANameService/staging/hpm_support/apc_code/apc_code
我怎样才能让它不创建子目录呢?
1条答案
按热度按时间zujrkrfu1#
你需要
list
文档中的文件source directory
以及copy
每个文件使用iterator
```Path source=new Path("hdfs://HANameService/sources/hpm_support/apc_code/");
Path target=new Path("hdfs://HANameService/staging/hpm_support/apc_code/");
FileSystem fs = source.getFileSystem(conf);
RemoteIterator sourceFiles = fs.listFiles(source, true);
if(sourceFiles != null) {
while(sourceFiles.hasNext()){
FileUtil.copy(fs, sourceFiles.next().getPath(), fs, target, true, conf);
}
}