zless / zcat / zgrep são apenas wrappers de shell que fazem o gzip mostrar os dados descomprimidos para o stdout. Para fazer o que você quer, você só precisa escrever um wrapper em torno dos comandos hadoop fs .
Além de: A razão pela qual isso provavelmente não funcionou para você é que você está perdendo uma barra adicional em seu URI de hdfs.
Você escreveu:
hadoop fs -cat hdfs://myfile.gz | zgrep "hi"
Isso tenta entrar em contato com o host ou cluster chamado myfile.gz . O que você realmente quer é hdfs: ///myfile.gz ou (assumindo que seus arquivos de configuração estão configurados corretamente), apenas myfile.gz , que o comando hadoop deve prefixar com o caminho correto do cluster / namenode definido por fs.defaultFS .
O seguinte funciona para mim.
$ 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