pig中未命名列的总和

z2acfund  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(340)
shipnode,delivery_method ,<unnamed>
 (9935,PICK,2)
 (9960,PICK,2)
 (9969,PICK,1)
 (9963,SHP,1)
 (9989,SHP,1)
 (9995,SHP,1)
 (9965,SHP,1)
 (9995,SHP,1)

这是

grunt> group_all_shipnode = GROUP
 >> union_all 
 >> BY(
 >> shipnode,delivery_method
 >> )
 >> ;

最后一列是未命名的,现在我要生成shipnode和delivery\节点的分组,并将第三列的总和作为

(9935,PICK,2)
 (9960,PICK,2)
 (9969,PICK,1)
 (9963,SHP,1)
 (9989,SHP,1)
 (9995,SHP,2) <<-------      sum of similar 
 (9965,SHP,1)

我试着这样做:

grunt> sum_group_all_shipnode =FOREACH group_all_shipnode 
 >> GENERATE FLATTEN(group) as(shipnode:chararray, delivery_method:chararray),
 >> sum($1.$2);

产生误差的原因:

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve sum using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
uz75evzq

uz75evzq1#

它需要是load语句中的关系,而不是$1.$2。例如,假设您正在将数据加载到关系a。

A = LOAD 'data.csv' USING PigStorage(',');
group_all_shipnode = GROUP A BY ($1,$2);
sum_group_all_shipnode = FOREACH group_all_shipnode 
                         GENERATE 
                             FLATTEN(group) AS (shipnode:chararray, delivery_method:chararray),
                             SUM(A.$2);

相关问题