sum函数

vxbzzdmp  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(430)

我是一个学生学习如何使用hortonworks沙盒Pig脚本。我的问题是我不能使用 SUM 功能正常。我已经成功地分离了防火墙日志的字段,并且我能够执行多个查询并使用count函数。。。但没什么好运气 SUM 在一个案例中我真正需要的功能。我使用的代码如下:

A = FOREACH logs_base GENERATE device_id,src,src_port,dst,dst_port,tran_ip,tran_port,service,duration,sent,rcvd,sent_pkt,rcvd_pkt,SN,user,group1, REGEX_EXTRACT(date, '\\d{3}-(\\d{2})-\\d{2}', 1) AS(month:chararray);
F1 = FILTER A BY user == 'PR11MS1120' and month == '10';
grpd1 = group F1 by user;
counter = foreach grpd1 {
    sum1 = SUM(A.rcvd);
    sum2 = SUM(A.sent);
    generate sum1, sum2;
};
dump counter;
C = foreach F1 generate rcvd, sent;
dump C;

当我把变量 C 我得到一个显示许多记录的结果,这些记录指示为应用的过滤器接收/发送的数据量。如:

(223,123)
(334,444)
(21,12344)
(...,...)

我真正想做的就是将所有这些记录相加,并显示接收和发送的总数量: (?,?) .
注意:我已尝试将变量类型更改为 int , long ,和 chararray 也没有成功。
我在尝试解决此问题时遇到的一些错误是:
无法将org.apache.pig.builtin.sum的匹配函数推断为多个或没有匹配的函数。请使用显式转换。

w1jd8yoj

w1jd8yoj1#

请尝试以下方法

A = FOREACH logs_base GENERATE device_id,src,src_port,dst,dst_port,tran_ip,tran_port,service,duration,sent,rcvd,sent_pkt,rcvd_pkt,SN,user,group1, REGEX_EXTRACT(date, '\\d{3}-(\\d{2})-\\d{2}', 1) AS(month:chararray);
F1 = FILTER A BY user == 'PR11MS1120' and month == '10';
grpd1 = group F1 by user;
C = foreach F1 generate group,SUM(F1.rcvd), SUM(F1.sent);
dump C;
hgtggwj0

hgtggwj02#

首先确保要求和的字段是int类型
使用- DESCRIBE A; 为了检查之后的数据类型,我认为因为您使用了filter condition,然后在f1上使用了groupby-

F1 = FILTER A BY user == 'PR11MS1120' and month == '10';
grpd1 = group F1 by user;

所以,在总结的时候,你应该用f1而不是a-

counter = foreach grpd1 {
    sum1 = SUM(F1.rcvd);
    sum2 = SUM(F1.sent);
    generate sum1, sum2;
};

使用 DESCRIBE grpd1; 你会明白我想说的,不会有“a”,我想这应该可以解决这个错误。最后,检查你想要的逻辑结果我没有检查过。希望这有帮助。ps-我也是一个学生,对Pig是新的。

hrysbysz

hrysbysz3#

幸运的是,我对Pig也不熟悉:)
我不确定sum是否可以转换为chararray(这可以解释错误),因此请使用rcvd和sent类型: int 然后为grpd1行李生成2个总和:

F1 = FILTER A BY user == 'PR11MS1120' and month == '10';
    grpd1 = group F1 by user; 
    C1 = foreach grpd1 generate SUM(F1.rcvd);
    dump C1;
    C2 = foreach grpd1 generate SUM(F1.sent);
    dump C2;

注:更多信息请点击此处。
希望我能帮点忙!

相关问题