【问题标题】:No wildcard support in hdfs dfs put command in Hadoop 2.3.0-cdh5.1.3?Hadoop 2.3.0-cdh5.1.3 中的 hdfs dfs put 命令不支持通配符?
【发布时间】:2015-04-30 09:52:12
【问题描述】:

我正在尝试通过将每日日志文件复制到每个月的相关 HDFS 文件夹来将我的每日 apache 访问日志文件移动到 Hive 外部表。 我尝试使用通配符,但似乎 hdfs dfs 不支持它? (文档似乎说它应该支持它)。

复制单个文件有效:

$ sudo HADOOP_USER_NAME=myuser hdfs dfs -put “/mnt/prod-old/apache/log/access_log-20150102.bz2” /user/myuser/prod/apache_log/2015/01/

但以下所有的都会抛出“没有这样的文件或目录”:

$ sudo HADOOP_USER_NAME=myuser hdfs dfs -put “/mnt/prod-old/apache/log/access_log-201501*.bz2” /user/myuser/prod/apache_log/2015/01/
放: `/mnt/prod-old/apache/log/access_log-201501*.bz2':没有这样的文件或 目录

$ sudo HADOOP_USER_NAME=myuser hdfs dfs -put /mnt/prod-old/apache/log/access_log-201501* /user/myuser/prod/apache_log/2015/01/
放: `/mnt/prod-old/apache/log/access_log-201501*':没有这样的文件或 目录

环境在Hadoop 2.3.0-cdh5.1.3

【问题讨论】:

    标签: hdfs cloudera


    【解决方案1】:

    我将回答我自己的问题。 所以 hdfs dfs put 确实可以使用通配符,问题是输入目录不是本地目录,而是挂载的 SSHFS (fuse) 驱动器。 看来SSHFS是不能处理通配符的。

    以下是使用本地文件系统而不是挂载驱动器时 hdfs dfs put 与通配符一起正常工作的证明:

    $ sudo HADOOP_USER_NAME=myuser hdfs dfs -put /tmp/access_log-201501* /user/myuser/prod/apache_log/2015/01/
    放:'/user/myuser/prod/apache_log/2015/01/access_log-20150101.bz2': 文件存在
    放: '/user/myuser/prod/apache_log/2015/01/access_log-20150102.bz2':文件 存在

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2014-01-23
      • 1970-01-01
      相关资源
      最近更新 更多