【发布时间】:2015-12-04 20:34:58
【问题描述】:
我需要使用 Java / Scala 程序在 HDFS 中移动与给定正则表达式相对应的多个文件。例如,我必须将名称为 *.xml 的所有文件从文件夹 a 移动到文件夹 b。
使用 shell 命令我可以使用以下命令:
bin/hdfs dfs -mv a/*.xml b/
我可以使用 Java API 移动单个文件,使用以下代码(Scala 语言),使用 FileSystem 类上的 rename 方法:
// Prepare initial configuration
val conf = new Configuration()
conf.set("fs.defaultFS", "hdfs://hdfs:9000/user/root")
val fs = FileSystem.get(conf)
// Move a single file
val ok = fs.rename(new Path("a/file.xml"), new Path("b/file.xml"));
据我所知,Path 类代表一个 URI。那么,我不能通过以下方式使用:
val ok = fs.rename(new Path("a/*.xml"), new Path("b/"));
有没有办法通过 Java / Scala API 在 HDFS 中移动一组文件?
【问题讨论】: