hadoop-getmerge是如何工作的?

3qpi33ja  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(815)

在hadoop getmerge description中
用法:hdfs dfs-getmerge src localdst[addnl]
我的问题是为什么getmerge连接到本地目的地为什么不连接hdfs本身?问这个问题是因为我有以下问题
如果要合并的文件超过本地文件的大小怎么办?
将hadoop-getmerge命令限制为只连接到本地目的地有什么具体原因吗?

lmyy7pcs

lmyy7pcs1#

这个 getmerge 命令是专门为将hdfs中的文件合并到本地文件系统上的单个文件而创建的。
此命令对于下载mapreduce作业的输出非常有用,该作业可能已生成多个part-*文件,并在本地将它们合并到一个文件中,您可以将其用于其他操作(例如,将其放入excel工作表中进行演示)。
回答您的问题:
如果目标文件系统没有足够的空间,则抛出ioexception。这个 getmerge 内部使用 IOUtils.copyBytes() (请参阅ioutils.copybytes())函数一次将一个文件从hdfs复制到本地文件。此函数引发 IOException 当复制操作出错时。
此命令与 hdfs fs -get 将文件从hdfs获取到本地文件系统的命令。唯一的区别是 hdfs fs -getmerge 将多个文件从hdfs合并到本地文件系统。
如果要在hdfs中合并多个文件,可以使用 copyMerge() 方法来自 FileUtil 类(请参见fileutil.copymerge())。
此api将目录中的所有文件复制到单个文件(合并所有源文件)。

相关问题