Frage

Beim Ausführen des folgenden Schweinsskripts erhalte ich einen Fehler in Zeile4: Wenn es sich um eine Gruppe handelt, erhalte ich Fehler. Wenn ich in Zeile4 von 'Gruppe' zu 'Gruppe' wechsle, wird das Skript ausgeführt.

Was ist der Unterschied zwischen Gruppen und Gruppe?

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;
War es hilfreich?

Lösung

"Gruppe" im streng niedrigeren Fall im Foreach ist das, was Sie überschreiten/gruppieren.

http://squarecog.wordpress.com/2010/05/11/group-operator-apache-pig/ sagt:

Wenn Sie eine Beziehung gruppieren, ist das Ergebnis eine neue Beziehung mit zwei Spalten: „Gruppe“ und der Name der ursprünglichen Beziehung.

Spaltennamen sind fallsempfindlich, daher müssen Sie in Ihrem Foreach eine „Gruppe“ unter den Fällen verwenden.

In Upper Case ist "Gruppe" der Gruppierungsoperator. Sie können sie nicht mischen. Also mach das nicht.

Andere Tipps

Normalerweise wird die Gruppe/Cogrup verwendet, um die Beziehung nach einem Schlüssel zu gruppieren. Wenn Sie die Beziehung gruppieren, beschreiben Sie die gruppierte Beziehung. GRP: {Gruppe: Chararray, a: {(Name: Chararray, Sitzung: Chararray, GPA: Float)}}.

Im obigen Ergebnis finden Sie "Gruppe".

Wenn Sie einen Operation in Grouped Relation (GRP) ausführen möchten, sollten Sie die Gruppe "Gruppe" verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top