java—将本地目录的内容复制到hdfs中的目录

txu3uszq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(495)

我有一个要求,我应该能够复制目录的内容,从本地系统到一个目录上的hdfs。
条件是只有目录内容应该复制到我指定的位置,而不是源目录本身。使用命令 copyfromlocal 我能做到。但是我需要使用java。有这种方法 copyFromLocalFile 它应该用于从本地文件系统复制,问题是它复制目录本身。也尝试过使用 FileUtils.copy 方法,给出与 copyFromLocalFile 作为一个测试,我尝试将目录内容从一个测试目录复制到另一个目录,这两个目录都在本地文件系统上。我曾经 FileUtils.copyDirectory . 这工作,但我不能使用它的hdfs。我看到了许多与这个问题相关的链接,但找不到任何方法。
伙计们,你们能告诉我这是否可能,或者是设计上的缺陷吗?如果可能的话,我该怎么办?

u4vypkhs

u4vypkhs1#

是啊,这真的很难完成 FileSystem api正是您想要的方式。文档不足使事情变得更加困难(方法太多,解释太少)。一年前我也面临同样的问题。
我得到的唯一解决方案是迭代:

void copyFilesToDir(String srcDirPath, FileSystem fs, String destDirPath)
        throws IOException {
    File dir = new File(srcDirPath);
    for (File file : dir.listFiles()) {
        fs.copyFromLocalFile(new Path(file.getPath()),
                new Path(destDirPath, file.getName()));
    }
}

我认为代码不需要什么解释。

相关问题