Hadoop -getmerge 是如何工作的?
How Hadoop -getmerge works?
hadoop getmerge 描述
Usage: hdfs dfs -getmerge src localdst [addnl]
我的问题是为什么 getmerge 连接到本地目标而不是 hdfs 本身?之所以问这个问题是因为我有以下问题
- 要合并的文件超过本地大小怎么办?
- 将 hadoop -getmerge 命令限制为仅连接到本地目标是否有任何特定原因?
getmerge
命令专为将 HDFS 中的文件合并到本地文件系统上的单个文件而创建。
此命令对于下载 MapReduce 作业的输出非常有用,它可能会生成多个 part-* 文件并在本地将它们组合成一个文件,您可以将其用于其他操作(例如将其放入Excel sheet 用于演示。
您问题的答案:
如果目标文件系统没有足够的space,则抛出 IOException。 getmerge
内部使用 IOUtils.copyBytes()
(参见 IOUtils.copyBytes())函数一次将一个文件从 HDFS 复制到本地文件。只要复制操作出错,此函数就会抛出 IOException
。
此命令与 hdfs fs -get
命令类似,后者将文件从 HDFS 获取到本地文件系统。唯一的区别是 hdfs fs -getmerge
将多个文件从 HDFS 合并到本地文件系统。
如果要在 HDFS 中合并多个文件,可以使用 copyMerge()
中的方法实现 FileUtil
class(参见 FileUtil.copyMerge())。
此 API 将一个目录中的所有文件复制到一个文件中(合并所有源文件)。
hadoop getmerge 描述
Usage: hdfs dfs -getmerge src localdst [addnl]
我的问题是为什么 getmerge 连接到本地目标而不是 hdfs 本身?之所以问这个问题是因为我有以下问题
- 要合并的文件超过本地大小怎么办?
- 将 hadoop -getmerge 命令限制为仅连接到本地目标是否有任何特定原因?
getmerge
命令专为将 HDFS 中的文件合并到本地文件系统上的单个文件而创建。
此命令对于下载 MapReduce 作业的输出非常有用,它可能会生成多个 part-* 文件并在本地将它们组合成一个文件,您可以将其用于其他操作(例如将其放入Excel sheet 用于演示。
您问题的答案:
如果目标文件系统没有足够的space,则抛出 IOException。
getmerge
内部使用IOUtils.copyBytes()
(参见 IOUtils.copyBytes())函数一次将一个文件从 HDFS 复制到本地文件。只要复制操作出错,此函数就会抛出IOException
。此命令与
hdfs fs -get
命令类似,后者将文件从 HDFS 获取到本地文件系统。唯一的区别是hdfs fs -getmerge
将多个文件从 HDFS 合并到本地文件系统。
如果要在 HDFS 中合并多个文件,可以使用 copyMerge()
中的方法实现 FileUtil
class(参见 FileUtil.copyMerge())。
此 API 将一个目录中的所有文件复制到一个文件中(合并所有源文件)。