使用pig求多个列的和

6l7fqoea  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(397)

我有多个具有相同列的文件,我正在尝试使用sum来聚合两列中的值。
柱结构如下

ID first_count second_count name desc
1  10          10           A    A_Desc
1  25          45           A    A_Desc
1  30          25           A    A_Desc
2  20          20           B    B_Desc
2  40          10           B    B_Desc

我如何计算第一次和第二次的总和?

ID first_count second_count name desc
1  65          80           A    A_Desc
2  60          30           B    B_Desc

下面是我写的脚本,但当我执行它时,我得到一个错误“无法推断sum的匹配函数,因为它们都不适合。请使用显式强制转换。

A = LOAD '/output/*/part*' AS (id:chararray,first_count:chararray,second_count:chararray,name:chararray,desc:chararray);
B = GROUP A BY id;

C = FOREACH B GENERATE group as id,
              SUM(A.first_count) as first_count,
              SUM(A.second_count) as second_count,
              A.name as name,
              A.desc as desc;
i86rm4rw

i86rm4rw1#

你的加载语句是错误的。第一个\u计数,第二个\u计数作为字符加载。sum不能添加两个字符串。如果您确定这些列将只接受数字,则将它们加载为int-

A = LOAD '/output/*/part*' AS (id:chararray,first_count:int,second_count:int,name:chararray,desc:chararray);

应该有用。

相关问题