【问题标题】:Hadoop HDFS copy with wildcards?带通配符的 Hadoop HDFS 副本?
【发布时间】:2014-01-23 04:32:59
【问题描述】:

我想将特定模式的文件从 hdfs 内复制到同一个 hdfs 集群中的另一个位置。 dfs shell 似乎无法处理这个问题:

hadoop dfs -cp /tables/weblog/server=jeckle/webapp.log.1* /tables/tinylog/server=jeckle/

没有返回错误:但也没有文件被复制。

【问题讨论】:

    标签: hadoop copy hdfs


    【解决方案1】:

    您需要在包含通配符的路径中使用双引号,如下所示:

    hdfs fs -cp "/path/to/foo*" /path/to/bar/
    

    【讨论】:

    • 很好奇——它是如何工作的? shell 会在 hds 看到它之前扩展“”。你的意思是*单引号
    • 这两个报价都没有关系。引号只是告诉 shell 不要扩展通配符,而不是作为单个参数传递给 hdfs 命令。我尝试了这两个报价它确实有效。
    • 这在文档中的某处有描述吗?
    • @Marek 这是一个shell变量知识。将“/foo/bar/*”视为一个参数,否则 shell 将尝试扩展通配符(例如:'*'、'?')。
    • 对。我应该彻底阅读你之前的评论。如果你有时间,你可以把这个解释从 cmets 移到回答。
    【解决方案2】:

    首先,支持带通配符的 HDFS 复制。其次,不推荐使用hadoop dfs,您最好使用hadoop fshdfs dfs。如果你确定操作没有成功(虽然看起来成功了),你可以查看 namenode 的日志文件看看有什么问题。

    【讨论】:

    • 如 OP 中所述,不会使用给定的通配符模式复制任何文件。如果您要声明“支持通配符”,请进行演示。
    • 因为我刚刚在集群上尝试了与您相同的命令,它适用于 2.1 和 0.23.9。说真的,请检查您的名称节点日志
    【解决方案3】:

    有趣。这是我在运行 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.. 但即使如此,在这种情况下也可能无关紧要。我在 1.2.1
    • 试过 1.2.1 并且它也可以工作。但是,我找到了这个link 请检查。
    【解决方案4】:

    这些都对我有用:

    ~]$ 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 
    

    我认为更好的方法是不要给双/单(“/')引号。

    【讨论】:

      【解决方案5】:

      如果有人想从用户在终端的当前目录中复制文件和文件夹,那么

      hdfs dfs -put ./
      

      【讨论】:

        猜你喜欢
        • 2015-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多