Вопрос

Запустив приведенный ниже сценарий свиньи, я получаю ошибку в строке 4: Если это группа, то я получаю ошибку. Если я перехожу от «группы» на «группу» в строке 4, то сценарий работает.

В чем разница между группой и группой?

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;
Это было полезно?

Решение

«Группа» в строго более низком случае в Foreach - это то, что вы зацикливаете/группируете.

http://squarecog.wordpress.com/2010/05/11/group-operator-in-apache-pig/ говорит:

Когда вы группируете отношение, результатом является новое отношение с двумя столбцами: «группа» и название исходного отношения.

Названия столбцов чувствительны к корпусу, поэтому вы должны использовать «группу» с более низким содержанием в своем Foreach.

«Группа» в верхнем корпусе является оператором группировки. Вы не можете их смешать. Так что не делай этого.

Другие советы

Обычно группа/Cogroup используется для группировки отношения некоторым ключом. После того, как вы группируете отношение, опишите сгруппированное отношение. Вы можете найти Ex: описать Grp; GRP: {группа: chararray, a: {(имя: chararray, session: chararray, gpa: float)}}.

В приведенном выше результате вы можете найти «группу».

Если вы хотите выполнить какую -то операцию по сгруппированному отношению (GRP), вам следует использовать «группу», а не группу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top