在Pig中生成二进制变量

时间:2015-01-06 10:23:04

标签: apache-pig

我是Pig世界的新手,我需要实现以下场景。

问题:     对猪脚本的输入:任意关系如下表所示

    A   B   C
    a1  b1  c1
    a2  b2  c2  
    a1  b1  c3

我们必须根据B,C生成二进制列,所以我的输出看起来像这样。

output 

    A   B   C   B.b1    B.b2    C.c1    C.c2        C.c3
    a1  b1  c1  1        0       1       0       0
    a2  b2  c2  0        1       0       1       0
    a1  b1  c3  1        0       0       0       1

有人能告诉我如何在猪身上实现这一目标吗?我知道这可以使用R脚本轻松实现,但我的要求是通过PIG实现。

我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你能试试吗?

<强>输入

a1      b1      c1
a2      b2      c2
a1      b1      c3

<强> PigScript:

X = LOAD 'input' USING PigStorage() AS (A:chararray,B:chararray,C:chararray);
Y = FOREACH X GENERATE A,B,C,
                       ((B=='b1')?1:0) AS Bb1,
                       ((B=='b2')?1:0) AS Bb2,
                       ((C=='c1')?1:0) AS Cc1,
                       ((C=='c2')?1:0) AS Cc2,
                       ((C=='c3')?1:0) AS Cc3;
DUMP Y;

<强>输出:

(a1,b1,c1,1,0,1,0,0)
(a2,b2,c2,0,1,0,1,0)
(a1,b1,c3,1,0,0,0,1)