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

时间:2014-09-29 09:14:40

标签: java hadoop hdfs

我要求我能够将目录内容从本地系统复制到HDFS上的目录。

条件是只应将目录内容复制到我指定的位置,而不是源目录本身。使用命令copyfromlocal我可以实现这一点。但我需要使用Java。有一种方法copyFromLocalFile应该用于从本地文件系统制作副本,问题是它复制目录本身。同时尝试使用FileUtils.copy方法,提供与copyFromLocalFile

相同的结果

作为测试,我尝试将目录内容从测试目录复制到本地文件系统上的另一个目录。我用了FileUtils.copyDirectory。这有效,但我无法用于HDFS。我看过很多与这个问题有关的链接,却找不到任何方法。

伙计们,如果可能或不可能,请您告诉我,还是设计缺陷?如果可以,我该怎么办?

1 个答案:

答案 0 :(得分:0)

使用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()));
    }
}

我认为代码几乎无需解释。