2017-06-06 71 views
0

我是猪脚新手。在下面的例子中,我被卡住了。任何人都可以帮助我如何使用pigscript获得下面指定的输出?Pigscript逻辑实现

输入:

1|ABC|NC 
1|DEF|NC 
2|CFD|NY 
2|CGF|NY 

输出:

1|ABC,DEF|NC 
2|CFD,CGF|NY 

脚本:

A = LOAD 'testfile.txt' USING PigStorage('|') AS (Id:chararray,name:chararray,state:chararray); 
B = FOREACH A GENERATE Id,name; 
C = FOREACH A GENERATE Id,name,state; 
C = DISTINCT C; 
GROUPED = GROUP B BY Id; 
D = FOREACH GROUPED GENERATE group AS Id,c.name AS name_val; 
E = JOIN D BY Id, C BY Id; 
X = FOREACH E GENERATE D.Id as docid,D.name_val as termid,C.state; 
Dump X; 
+0

哪里是你的pigscript实施 '不同的情况'? –

回答

0

负载由第一和第三柱,然后将数据和组生成的列,为了得到所需的输出。

A = LOAD 'input.txt' USING PigStorage('|') AS (f1:int,f2:chararray;f3:chararray); 
B = GROUP A BY f1,f3; 
C = FOREACH B GENERATE FLATTEN(group) as (f1,f3),A.f2 AS f2; 
D = FOREACH C GENERATE f1,f2,f3; 
DUMP D; 
0
Its working as now expected after adding BagToString method. 

A = LOAD 'testfile.txt' USING PigStorage('|') AS (f1:int,f2:chararray,f3:chararray);   
B = GROUP A BY (f1,f3);   
C = FOREACH B GENERATE FLATTEN(group) as (f1,f3),A.f2 AS f2; 
D = FOREACH C GENERATE f1, BagToString(f2, ','), f3; 
STORE D INTO '[path]' USING PigStorage('|');