2017-06-06 12 views
0

Je suis nouveau à pigscript. Je suis coincé en travaillant sur l'exemple ci-dessous. Quelqu'un pourrait-il m'aider sur la façon d'obtenir la sortie spécifiée ci-dessous en utilisant pigscript?Mise en œuvre de logique Pigscript

Entrée:

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

Sortie:

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

Script:

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

Où est votre pigscript œuvre 'différents scénarios'? –

Répondre

0

charge les données et le groupe de 1er et 3ème colonne, puis générer les colonnes, afin d'obtenir la sortie désirée.

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('|');