我試圖使用Hadoop Streaming運行兩個命令,如gunzip | map_to_old_format.py
,但它與gzip說「| .gz not found」或沿着這些行的東西(只有當通過Hadoop運行..如果我運行命令行,它工作正常)。如何在兩個命令行爲與標準管道類似的情況下創建一個linux shell命令?
由於我無法弄清楚如何在Python中進行gunzip,我想創建一個shell腳本來完成這個命令(例如gunzip_and_map_to_old.sh
)。我想這與以下,但gzip的不喜歡(gzip的抱怨「壓縮程序:標準輸入:非gzip格式」):
#!/bin/bash
while read data; do
echo $data | gunzip | map_to_old_format.py $2
done
關於蟒蛇gunzip解,我試過f = gzip.GzipFile("", "rb", fileobj=sys.stdin)
以及一個包裝方法描述here 。
嗯,這更簡單,我想它會!謝謝 :) –