Java将HDFS中的文件复制到HDFS中的另一个目录

时间:2017-05-21 05:01:12

标签: java hadoop hdfs

我使用此链接here中的示例将内容从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_code下创建一个新的目录,文件最终在hdfs://HANameService/staging/hpm_support/apc_code/apc_code中如何才能让它不创建该子目录?

1 个答案:

答案 0 :(得分:5)

您需要使用list

source directorycopy每个文件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<LocatedFileStatus> sourceFiles = fs.listFiles(source, true); if(sourceFiles != null) { while(sourceFiles.hasNext()){ FileUtil.copy(fs, sourceFiles.next().getPath(), fs, target, true, conf); } }
{{1}}

希望它对你有所帮助