我在HDFS中有一个HDFS源目录和一个目标存档目录。
在每次工作开始时,我需要将源目录中存在的所有零件文件移动(或复制,然后删除)到我的存档目录中。
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
对象仅引用我的源目录。我相信使用存档位置创建
fs2
不会有所帮助。我发现了有关
FileSystem.rename()
的信息,但这需要使用文件名作为参数。我需要将/my/source/*
移到/my/archive/
。
最佳答案
检查这是否适合您,
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);
关于java - Hadoop:如何将HDFS文件从一个目录移动到另一目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54828782/