猪脚本代码错误?

数据挖掘 大数据 apache-hadoop
2021-10-14 15:44:34

在运行下面的猪脚本时,我在第 4 行收到错误:如果是 GROUP,那么我收到错误。如果我在第 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;
2个回答

FOREACH 中严格小写的“组”是您正在循环/分组的内容。

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

当您对关系进行分组时,结果是具有两列的新关系:“组”和原始关系的名称。

列名区分大小写,因此您必须在 FOREACH 中使用小写的“组”。

'GROUP' 大写是分组运算符。你不能混合它们。所以不要那样做。

通常 GROUP/COGROUP 用于通过某个键对关系进行分组。将关系分组后描述分组的关系。您可以找到 EX: describe grp; grp:{组:chararray,A:{(名称:chararray,会话:chararray,gpa:float)}}。

在上面的结果中,您可以找到“组”。

如果你想对分组关系(grp)执行一些操作,你应该使用“组”而不是 GROUP。