使用日期数据获取星期,并在pig中进行一些计算

htzpubme  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(220)

我的数据是这样的:

(201601030637,2,64.001213)    
(201601030756,3,63.5869656667)   
(201601040220,2,62.758471)

第一列是年(2016)月(01)日(03)时(06)分(37)。
我想把第三列的值以星期为基础求和。我怎样才能把他们分成52个不同的小组?有人能帮忙吗?谢谢!

fykwrbwg

fykwrbwg1#

使用getweek并从第一列创建一个新列。然后按新列分组并使用sum。假设已将数据加载到关系a。

B = FOREACH A GENERATE A.$0,A.$1,A.$2,GetWeek(A.$0) as week_of_year;
C = GROUP B BY (B.$4);
D = FOREACH C GENERATE group,SUM(B.$2);
DUMP D;
iqjalb3h

iqjalb3h2#

使用 ToDate 将datestring转换为datetime类型。然后使用 GetWeek 获取周数。最后使用 GROUP 按周数分组 SUM .

A = LOAD '/path_to_data/data' USING PigStorage(',') as (c1: chararray, c2: int, c3: float);
B = FOREACH A GENERATE GetWeek(ToDate(c1,'yyyyMMddHHmm')) as weeknum, c1, c2, c3;
C = FOREACH (GROUP B BY weeknum) GENERATE group as weeknum, SUM(B.c2) as c2_sum;

DUMP C;

相关问题