我正在将Azure存储中的一堆文件加载到pig中。 Pig默认支持gzip,所以如果文件扩展名为.gz,一切正常。
问题是旧文件以.zip扩展名存储(我有数百万个)。
有没有办法告诉pig加载文件并将.zip视为gzip?
答案 0 :(得分:0)
我真的不知道其他一些选项可用,但你可以尝试这样的事情
只是一个文件的示例,您可能需要根据需要更改脚本。
input.zip
1,john
2,cena
3,rock
4,sam
test.sh
#!/bin/bash
FILE_NAME=$(echo $1 | cut -d '.' -f1)
unzip "$1"
tar czf "$FILE_NAME.gz" "$FILE_NAME"
pig -x local -param PIG_INPUT_FILE="$FILE_NAME.gz" -f myscript.pig
myscript.pig
A = LOAD '$PIG_INPUT_FILE' USING PigStorage(',');
DUMP A;
输出:
$ ./test.sh input.zip
(1,john)
(2,cena)
(3,rock)
(4,sam)
另一种可能的选择是您可能需要编写UDF以使用java.util.zip
库将zip转换为gz并调用LoadFunc
选项。我没有尝试过这个选项,但如果你想要,你可以尝试一下。