2014-10-15 17 views

Antwort

6

In Apache Pig können Sie Anweisungen verwenden, die in FOREACH see Pig Basics verschachtelt sind. Hier ist ein Beispiel aus der Dokumentation: A ist eine Tasche in B.

X = FOREACH B { 
     S = FILTER A BY 'xyz'; 
     GENERATE COUNT (S.$0); 
} 

Statt COUNT können Sie IsEmpty verwenden und Operator?:

X = FOREACH B { 
     S = FILTER A BY 'xyz'; 
     GENERATE (IsEmpty(S.$0)) ? 'xyz NOT PRESENT' : 'xyz PRESENT') as present, B; 
} 

Oder nur die Taschen zu verlassen, die die Daten enthalten:

X = FOREACH B { 
     S = FILTER A BY 'xyz'; 
     GENERATE B, S; 
} 
F = FILTER X BY not IsEmpty(S); 
R = FOREACH F GENERATE B; 

Das wird teuer vermeiden verbinden sich , da zusätzliche Joins zusätzliche Map Reduce-Jobs sind.

Verwandte Themen