Hadoop
有沒有辦法在hdfs中grep gzip壓縮的內容而不提取它?
我正在尋找一種歸檔
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