scala - Hadoop copyMerge无法正常工作:scala

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

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

有什么线索吗?

最佳答案

copyMerge的第二个参数是目录,而不是单个文件。
这应该工作:
FileUtil.copyMerge(fs, srcPath, localfs, new Path(dstPath.toString), false, conf, null)
通常,阅读源代码是调试此类问题的最佳方法。

https://stackoverflow.com/questions/56285714/

相关文章:

hadoop - hadoop fs -mkdir:没有这样的目录

bash - 为什么parse_git_branch仅在Docker终端窗口中失败

docker - 在Bluemix容器上安装卷并在它们之间共享不起作用

hadoop - 如何在长度大于VARCHAR(32k)的BIGSQL表中存储字符串数据

docker - Bluemix上的Docker run命令不允许正确设置环境变量

hadoop - 如何在本地获取此输出

docker - 外部服务在运行时设置的转发容器端口

hadoop - 如何在Java UDF中加载H20训练有素的模型

hadoop - Hive Joins可以在Apache Nifi中实现吗?

amazon-web-services - 在具有默认配置的EMR群集模式下会发生什么?