J'ai un script de porc similaire à ce qui suit:PIG - concaténation d'une chaîne à un paramètre?
a = LOAD 'feedname.hourly_data'
USING org.apache.hcatalog.pig.HCatLoader();
b = FILTER a BY dt=='$date{00}';
c = GROUP b ALL;
d = FOREACH c GENERATE COUNT(b);
dump d;
Le script est exécuté avec les arguments suivants:
pig -useHCatalog -p date=20140708 my_script.pig
Notez que ce script fonctionne avec la valeur dt hardcoded:
a = LOAD 'feedname.hourly_data'
USING org.apache.hcatalog.pig.HCatLoader();
b = FILTER a BY dt=='2014070800';
c = GROUP b ALL;
d = FOREACH c GENERATE COUNT(b);
dump d;
Toutefois, lorsque j'exécuterai après avoir passé le paramètre date=20140708
, la requête retournera zéro résultat. Est-ce que quelqu'un sait pourquoi cela se passe? S'il n'y a pas assez d'information à dire, quelle est la première chose que je devrais tester?
Merci, je ne savais pas que l'option dryrun ferait cela. En regardant la sortie de substitution, mon '' $ date {00} ''se développe en'' 20140708 {00} '', ce qui est faux. Faire 'b = FILTER a BY dt == $ {date} 00;' comme suggéré ne fonctionne pas, cependant - cochon se plaint de 'Erreur de syntaxe, symbole inattendu à ou près de '$'' J'ai aussi essayé 'b = FILTER a BY dt == '$ {date} 00'; ', mais il ne développe pas $ {date} 00'. – SheerSt
Bummer. J'ai suggéré une alternative différente pour vous. –
Merci pour la suggestion. J'ai essayé cela, et cela me donne une erreur de mémoire (ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Erreur interne non gérée, limite de surcharge du GC dépassée) J'ai aussi essayé '% par défaut MIN_DATE \' echo $ {date} 00 \ ' % par défaut MAX_DATE \' echo $ {date} 23 \ '' sans succès (sorties d'écho respectivement '00' et' 23') – SheerSt