Erreur de code de script Pig?
-
16-10-2019 - |
Question
Lors de l'exécution du script ci-dessous cochon Je reçois une erreur dans line4: S'il est alors GROUPE j'obtiens l'erreur. Si le changement de I « GROUPE » « groupe » TO line4, le script est en cours d'exécution.
Quelle est la différence entre le groupe et GROUP?
LINES = LOAD '/user/cloudera/datapeople.csv' USING PigStorage(',') AS ( firstname:chararray, lastname:chararray, address:chararray, city:chararray, state:chararray, zip:chararray );
WORDS = FOREACH LINES GENERATE FLATTEN(TOKENIZE(zip)) AS ZIPS;
WORDSGROUPED = GROUP WORDS BY ZIPS;
WORDBYCOUNT = FOREACH WORDSGROUPED GENERATE GROUP AS ZIPS, COUNT(WORDS);
WORDSSORT = ORDER WORDBYCOUNT BY $1 DESC;
DUMP WORDSSORT;
La solution
« groupe » en cas strictement inférieur dans la FOREACH est la chose que vous Looping / regroupement sur.
http://squarecog.wordpress.com / 2010/05/11 / groupe-opérateur en apache-porc / dit:
Lorsque vous groupez une relation, le résultat est une nouvelle relation avec deux colonnes: « groupe » et le nom de la relation originale
.
Les noms de colonnes sont sensibles à la casse, donc vous devez utiliser « groupe » minuscules dans votre FOREACH.
« groupe » en majuscules est l'opérateur de regroupement. Vous ne pouvez pas les mélanger. Donc, ne pas le faire.
Autres conseils
Normalement, le GROUPE / COGROUP est utilisé pour regrouper la relation par certains key.after vous groupez la relation décrivez groupés relation.you peut trouver EX: décrire grp; grp: {groupe: chararray, A: {(nom: chararray, session: chararray, gpa: float)}}.
dans le résultat ci-dessus, vous pouvez trouver « groupe ».
si vous voulez effectuer une opération sur la relation groupée (grp), vous devez utiliser le "groupe" non GROUP.