我要求我能够将目录内容从本地系统复制到HDFS上的目录。
条件是只应将目录内容复制到我指定的位置,而不是源目录本身。使用命令copyfromlocal
我可以实现这一点。但我需要使用Java。有一种方法copyFromLocalFile
应该用于从本地文件系统制作副本,问题是它复制目录本身。同时尝试使用FileUtils.copy
方法,提供与copyFromLocalFile
作为测试,我尝试将目录内容从测试目录复制到本地文件系统上的另一个目录。我用了FileUtils.copyDirectory
。这有效,但我无法用于HDFS。我看过很多与这个问题有关的链接,却找不到任何方法。
伙计们,如果可能或不可能,请您告诉我,还是设计缺陷?如果可以,我该怎么办?
答案 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()));
}
}
我认为代码几乎无需解释。