Hadoop copyMerge无法正常工作:scala

时间:2019-05-24 04:04:00

标签: scala hadoop

我正在尝试通过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)
}

我尝试执行此操作,没有结果,没有错误,甚至也没有创建文件。 我确认我正确传递了所有参数。

有任何线索吗?

2 个答案:

答案 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]