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

Modified on: Mon, 15 Apr 2019 22:20:02 +0800

我正在寻找一种方法来zgrep hdfs files

类似的东西:

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

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

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

作者:Jas

最佳答案

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

除此之外:这可能对你不起作用的原因是你在hdfs URI中缺少一个额外的斜杠。

您写道:

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

尝试联系名为 myfile.gz 的主机或群集。您真正想要的是 hdfs:///myfile.gz 或(假设您的配置文件已正确设置),只需 myfile.gz ,其中hadoop命令应该是前缀为 fs.defaultFS 定义的正确的cluster / namenode路径。

以下适用于我。

$ 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

相关问答

添加新评论