我正在尝试通过scala合并HDFS中存在的3个文件。如下面的代码所述,所有3个文件都位于HDFS位置srcPath
中。
创建了如下函数:
def mergeFiles(conf: Configuration, fs: FileSystem, srcPath: Path, dstPath: String, finalFileName: String): Unit {
val localfs = FileSystem.getLocal(conf)
val status = fs.listStatus(srcPath)
status.foreach(x =>
FileUtil.copyMerge(fs, x.getPath, localfs, new Path(dstPath.toString), false, conf, null)
}
我尝试执行此操作,没有结果,没有错误,甚至也没有创建文件。 我确认我正确传递了所有参数。
有任何线索吗?
答案 0 :(得分:0)
copyMerge
的第二个参数是目录,而不是单个文件。
这应该起作用:
FileUtil.copyMerge(fs, srcPath, localfs, new Path(dstPath.toString), false, conf, null)
通常,阅读源代码是调试此类问题的最佳方法。
答案 1 :(得分:0)
FileUtil#copyMerge方法已被删除。查看主要更改的详细信息:
https://issues.apache.org/jira/browse/HADOOP-12967
https://issues.apache.org/jira/browse/HADOOP-11392
您可以使用getmerge
用法:hadoop fs -getmerge [-nl]