Hadoop:如何将HDFS文件从一个目录移动到另一目录?

时间:2019-02-22 14:03:08

标签: java hadoop hdfs

我在HDFS中有一个HDFS源目录和一个目标存档目录。 在每次工作开始时,我需要将 Source 目录中存在的所有零件文件移动(或复制,然后删除)到我的 Archive 目录中。 / p>

SparkSession spark = SparkSession.builder().getOrCreate();
JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());
String hdfsSrcDir = "hdfs://clusterName/my/source";
String archiveDir = "hdfs://clusterName/my/archive";
try{
    FileSystem fs = FileSystem.get(new URI(hdfsSrcDir ),jsc.hadoopConfiguration());
}

我不知道如何继续。目前,我的fs对象仅引用了我的 source 目录。
我相信,创建具有 archive 位置的fs2不会帮助。

我发现了大约FileSystem.rename(),但这需要使用文件名作为参数。我需要将/my/source/*移到/my/archive/

1 个答案:

答案 0 :(得分:0)

检查是否适合您

Configuration configuration = new Configuration(); 
configuration.set("fs.defaultFS", "hdfs://xyz:1234"); 
FileSystem filesystem = FileSystem.get(configuration); 
FileUtil.copy(filesystem, new Path("src/path"), 
              filesystem, new Path("dst/path"), false, configuration); 
filesystem.delete(new Path("src/path"), true);