Hadoop

有沒有辦法在hdfs中grep gzip壓縮的內容而不提取它?

  • January 3, 2016

我正在尋找一種歸檔zgrep hdfs方式

就像是:

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

或者

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

它對我來說真的不起作用,無論如何用命令行來實現它?

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

引用自:https://serverfault.com/questions/661515