将文件加载到猪中并解压缩

时间:2014-10-07 15:12:44

标签: hadoop apache-pig

我正在将Azure存储中的一堆文件加载到pig中。 Pig默认支持gzip,所以如果文件扩展名为.gz,一切正常。

问题是旧文件以.zip扩展名存储(我有数百万个)。

有没有办法告诉pig加载文件并将.zip视为gzip?

1 个答案:

答案 0 :(得分:0)

我真的不知道其他一些选项可用,但你可以尝试这样的事情

  1. 编写一个bash脚本,将给定的zip文件转换为gz文件
  2. 将gz文件加载到pig
  3. 只是一个文件的示例,您可能需要根据需要更改脚本。

    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选项。我没有尝试过这个选项,但如果你想要,你可以尝试一下。