AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 661515
Accepted
Jas
Jas
Asked: 2015-01-23 02:49:56 +0800 CST2015-01-23 02:49:56 +0800 CST 2015-01-23 02:49:56 +0800 CST

有没有办法在hdfs中grep gzip压缩的内容而不提取它?

  • 772

我正在寻找一种归档zgrep hdfs方式

就像是:

hadoop fs -zcat hdfs://myfile.gz | grep "hi"

或者

hadoop fs -cat hdfs://myfile.gz | zgrep "hi"

它对我来说真的不起作用,无论如何用命令行来实现它?

hadoop
  • 3 3 个回答
  • 19772 Views

3 个回答

  • Voted
  1. jackparsons
    2016-01-03T16:27:52+08:002016-01-03T16:27:52+08:00

    此命令行将自动为任何简单的文本文件找到正确的解压缩器,并将未压缩的数据打印到标准输出:

    hadoop fs -text hdfs:///path/to/file [hdfs:///path/to/another/file]
    

    我已经将它用于 .snappy 和 .gz 文件。它可能适用于 .lzo 和 .bz2 文件。

    这是一个重要的特性,因为 Hadoop 对 Snappy 文件使用自定义文件格式。这是解压缩 Hadoop 创建的 Snappy 文件的唯一直接方法。没有像其他压缩器那样的命令行“unsnappy”命令。我也不知道有任何直接命令可以创建一个。我只将它们创建为 Hive 表数据。

    注意:hadoop fs -text是单线程的,在你运行命令的机器上运行解压。

    • 6
  2. Best Answer
    Travis Campbell
    2015-02-21T10:32:12+08:002015-02-21T10:32:12+08:00

    zless/zcat/zgrep只是外壳包装器,它们使gzip将解压缩的数据输出到标准输出。要做你想做的事,你只需要写一个围绕hadoop fs命令的包装器。

    旁白:这可能对您不起作用的原因是您的 hdfs URI 中缺少一个额外的斜杠。

    你写了:

    hadoop fs -cat hdfs://myfile.gz | zgrep "hi"
    

    这会尝试联系名为myfile.gz的主机或集群。您真正想要的是hdfs:///myfile.gz或(假设您的配置文件设置正确),只是myfile.gz,hadoop 命令应该在其前面加上fs.defaultFS定义的正确集群/名称节点路径。

    以下对我有用。

    $ hadoop fs -ls hdfs:///user/hcoyote/foo.gz
    Found 1 items
    -rw-r--r--   3 hcoyote users    5184637 2015-02-20 12:17 hdfs:///user/hcoyote/foo.gz
    
    $ hadoop fs -cat hdfs:///user/hcoyote/foo.gz | gzip -c -d | grep -c Authorization
    425893
    
    $ hadoop fs -cat hdfs:///user/hcoyote/foo.gz | zgrep -c Authorization
    425893
    
    • 5
  3. Tagar
    2015-07-24T10:13:47+08:002015-07-24T10:13:47+08:00

    我通常使用 hdfs fuse mounts.. 所以几乎可以使用任何常规的 Unix 命令(一些命令可能无法工作,因为 hdfs 不是 POSIX 兼容的文件系统)。

    gunzip/zcat

    $ gunzip /hdfs_mount/dir1/somefile.gz 
    $ grep hi /hdfs_mount/dir1/somefile.gz 
    

    在 hdfs 保险丝座上工作得很好。而且打字速度也更快:),如果你想编写脚本,更容易阅读。

    将 hadoop 挂载为“常规”文件系统:http: //www.cloudera.com/content/cloudera/en/documentation/cdh4/latest/CDH4-Installation-Guide/cdh4ig_topic_28.html

    • 0

相关问题

  • gitosis 干扰 hadoop

  • HDFS 中的“流式数据访问”是什么意思?

  • hadoop - 数据节点退役

  • 什么是 Hadoop,它的用途是什么?[关闭]

  • Hadoop 集群。2 台快速、4 台中等、8 台较慢的机器?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve