我将数据文件拆分为" |"所以我使用下面的代码。
RAW_LOG = LOAD 'logs.log' USING TextLoader as (line:chararray);
splt = foreach RAW_LOG generate FLATTEN(STRSPLIT($0, '\\|'));
id_vals = foreach splt generate $4 as uid, $8 as site_id , $9 as dsid , $6 as amt;
我想要每个site_id的SUM(amt),我已尝试过group by,但没有工作。
答案 0 :(得分:2)
我假设您希望最终结果是两列site_id和该site_id的amt总和。
您可以使用PigStorage直接加载管道分隔文件,无需加载然后拆分。尽管您可以使用$。
访问元素,但提供模式定义会很好这是代码 -
RAW_LOG = LOAD 'logs.log' USING PigStorage('|') as (//YOUR SCHEMA DEFINITION);
SITE_GRP = group RAW_LOG by site_id;
SITE_SUM = foreach SITE_GRP generate group, SUM(RAW_LOG.amt);
希望这有帮助。