1

(注意:我需要使用 distcp 来获得并行性)

我在 /user/bhavesh 文件夹中有 2 个文件

在此处输入图像描述

我在 /user/bhavesh1 文件夹中有 1 个文件

在此处输入图像描述

将 2 个文件从 /user/bhavesh 复制到 /user/uday 文件夹(这工作正常)

在此处输入图像描述

在此处输入图像描述

这将创建 /user/uday 文件夹

如果创建文件而不是文件夹,则将 1 个文件从 /user/bhavesh1 复制到 /user/uday1 文件夹

在此处输入图像描述

在此处输入图像描述

我需要的是,如果有一个文件/user/bhavesh1/emp1.csv我需要它应该创建/user/uday1/emp1.csv [uday1 应该形成目录] 任何建议或帮助都非常感谢。

4

1 回答 1

1

在 unix 系统中,当您通过提供以 /user/uday1/ 结尾的目标目录名称来复制单个文件时,将创建目标目录,但是如果目标目录丢失,hadoop fs -cp 命令将失败。

当涉及到 hdfs distcp 时,如果它是单个文件,则以 / 结尾的文件/目录名称将被忽略。一种解决方法是在执行 distcp 命令之前创建目标目录。您可以在 -mkdir 中添加 -p 选项以避免目录已存在错误。

hadoop fs -mkdir -p /user/uday1  ; hadoop distcp /user/bhavesh1/emp*.csv /user/uday1/  

这适用于源目录中的单个文件和多个文件。

于 2017-08-18T19:20:03.593 回答