我是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实现。
我们非常感谢您的帮助。
答案 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)