【发布时间】:2014-01-23 04:32:59
【问题描述】:
我想将特定模式的文件从 hdfs 内复制到同一个 hdfs 集群中的另一个位置。 dfs shell 似乎无法处理这个问题:
hadoop dfs -cp /tables/weblog/server=jeckle/webapp.log.1* /tables/tinylog/server=jeckle/
没有返回错误:但也没有文件被复制。
【问题讨论】:
我想将特定模式的文件从 hdfs 内复制到同一个 hdfs 集群中的另一个位置。 dfs shell 似乎无法处理这个问题:
hadoop dfs -cp /tables/weblog/server=jeckle/webapp.log.1* /tables/tinylog/server=jeckle/
没有返回错误:但也没有文件被复制。
【问题讨论】:
您需要在包含通配符的路径中使用双引号,如下所示:
hdfs fs -cp "/path/to/foo*" /path/to/bar/
【讨论】:
首先,支持带通配符的 HDFS 复制。其次,不推荐使用hadoop dfs,您最好使用hadoop fs 或hdfs dfs。如果你确定操作没有成功(虽然看起来成功了),你可以查看 namenode 的日志文件看看有什么问题。
【讨论】:
有趣。这是我在运行 Hadoop 0.18.0 的本地 VM 中得到的。你用的是什么版本?我也可以试试 1.2.1
hadoop-user@hadoop-desk:~$ hadoop fs -ls /user/hadoop-user/testcopy
hadoop-user@hadoop-desk:~$ hadoop dfs -cp /user/hadoop-user/input/*.txt /user/hadoop-user/testcopy/
hadoop-user@hadoop-desk:~$ hadoop fs -ls /user/hadoop-user/testcopy
Found 2 items
-rw-r--r-- 1 hadoop-user supergroup 79 2014-01-06 04:35 /user/hadoop-user/testcopy/HelloWorld.txt
-rw-r--r-- 1 hadoop-user supergroup 140 2014-01-06 04:35 /user/hadoop-user/testcopy/SampleData.txt
【讨论】:
这些都对我有用:
~]$ hadoop fs -cp -f /user/cloudera/Dec_17_2017/cric* /user/cloudera/Dec_17_2017/Dec_18
~]$ hadoop fs -cp -f "/user/cloudera/Dec_17_2017/cric*" /user/cloudera/Dec_17_2017/Dec_18
我认为更好的方法是不要给双/单(“/')引号。
【讨论】:
如果有人想从用户在终端的当前目录中复制文件和文件夹,那么
hdfs dfs -put ./
【讨论】: