En fait, j'écris un script PIG et je veux exécuter un ensemble d'instructions si l'une des conditions est remplie.
J'ai placé une variable et vérifie une certaine valeur de cette variable. Supposer
if flag==0 then
A = LOAD 'file' using PigStorage() as (f1:int, ....);
B = ...;
C = ....;
else
again some Pig Latin statements
Puis-je le faire dans PIG Script? Si oui, comment puis-je faire cela?
Merci.
Oui, Pig propose une construction if-then-else, mais elle n'est pas utilisée comme vous le demandez .
If-then-else de Pig est un opérateur arithmétique invoqué avec le raccourci "condition? True_value: false_value" dans le cadre d'une expression, comme:
X = FOREACH A GENERATE f2, (f2==1?1:COUNT(B));
Pour ce faire, vous devez déjà avoir chargé la table A. Pour exécuter le flux de contrôle autour d'instructions Pig entières, vous aurez besoin de quelque chose comme oozie , comme suggéré par Fakrudeen.
Vous pouvez créer un Python autour de votre script Pig. Voir Embedded Pig dans la documentation.
Créez un UDF (disons, en Java), puis intégrez-le dans votre script PIG. Vous devrez "enregistrer" le fichier jar que vous générez après avoir écrit le UDF .
// (quelque chose comme ça), dites votre Java UDF class
est UDFCondition
et le fichier jar généré est PigUDFCondition.jar, puis dans votre PIG Code
s'inscrire PigUDFCondition.jar
X = foreach A generate UDFCondition(..flag...)
Une déclaration CASE est disponible à partir de la version 0.12.