你可以在PIG中的多个关系之间进行切换吗?

时间:2014-12-20 04:33:37

标签: hadoop apache-pig

我想找到另一个变量的组合:

示例:

name, group, points  
jim,    T,    12
steven, T,    10
ting,   T,    15
matt,   F,    16
aamir,  F,    12

我希望能够获得T和F成员之间的所有组合,然后对点列进行一些乘法。我首先想到把它分成两个关系,即T和F关系,并使用CUBE在它们之间做一些组合,但我不认为你可以在关系之间使用CUBE?有什么建议吗?

结果:

jim,     matt,   12*16
jim,     aamir,  12*12
steven,  matt,   16*16
...
...
ting,    aamir,  15*12

1 个答案:

答案 0 :(得分:0)

你能试试吗?

<强> input.txt中

jim,T,12
steven,T,10
ting,T,15
matt,F,16
aamir,F,12

<强> PigScript:

A = LOAD 'input.txt' USING PigStorage(',') AS (name:chararray, group:chararray, points:int);
B = FILTER A BY group=='T';
C = FILTER A BY group=='F';
D = CROSS B,C;
E = FOREACH D GENERATE B::name,C::name,B::points*C::points;
DUMP E;

<强>输出

(jim,matt,192)
(jim,aamir,144)
(steven,matt,160)
(steven,aamir,120)
(ting,matt,240)
(ting,aamir,180)