2

我在集群 A 中有一个目录:/a/b/c。该目录包含目录“一”、“二”、“三”、...、“九十”。在集群 B 中,我有目录 /a/b/c。该目录包含目录“one”。我想将目录“一”到“九十”从集群 A 复制到集群 B,这样,最后,集群 B 将拥有目录 /a/b/c/one ... /a/b/c/ninety。集群 B /a/b/c/one 中有文件不在集群 A /a/b/c/one 中。复制后那些应该仍然存在。

我尝试了以下方法:

1)

distcp /a/b/c/ hdfs:B:8020/a/b/c

但这会在前一个 c 中创建一个目录 c。

2)

distcp /a/b/c/* hdfs:B:8020/a/b/c

但我得到:

zsh: no matches found: /a/b/c/*

3)

distcp /a/b/c/\* hdfs:B:8020/a/b/c

但我得到:

Copy failed: org.apache.hadoop.mapred.InvalidInputException: Input source /a/b/c/* does not exist.

正确的命令是什么?

4

2 回答 2

4

知道了。

distcp /a/b/c hdfs:B:8020/a/b/
于 2013-10-17T17:52:00.657 回答
0

如果根据建议的方案您已经有一个“c”,那么您可能想要将 /a/b/c 下的内容添加到目标集群中现有的 /a/b/c 中。为此,您可以使用 -update 标志。

distcp -update /a/b/c hdfs:B:8020/a/b/c
于 2015-07-30T15:29:37.947 回答