我想在Pig中执行过滤条件,其中我想过滤出属于当前日期、当前小时或当前周的数据。
在输入数据中,我的输入为
2016-01-05 16:59:50,text11
2016-01-05 17:59:50,text11
我正在执行一个load函数
A = LOAD '/hoursbetween-poc/input/' using PigStorage(',') as (time:chararray,colval:chararray) ;
G = FILTER A BY HoursBetween(CurrentTime(),ToDate(time, 'yyyy-MM-dd HH:mm:ss'))<1;
dump G;但它从当前日期减去了60分钟。我想筛选属于当前小时的所有记录
例如:
如果当前时间是6.30,代码在5.30之前过滤所有内容,我只想在5之前进行四舍五入和过滤。
如何在猪身上实现这一点。
发布于 2016-01-06 03:53:23
输入:
2016-01-05 10:00:50,text1
2016-01-05 10:59:50,text2
2016-01-05 11:10:50,text3
2016-01-05 09:00:50,text4猪脚本:
A = LOAD 'a.csv' USING PigStorage(',') AS (time:chararray,colval:chararray) ;
B = FOREACH A GENERATE GetHour(CurrentTime()) AS cur_hr, GetHour(ToDate(time, 'yyyy-MM-dd HH:mm:ss')) AS act_hr, time, colval;
C = FILTER B BY (cur_hr - act_hr) <= 1;
DUMP C;输出:
(11,10,2016-01-05 10:00:50,text1)
(11,10,2016-01-05 10:59:50,text2)
(11,11,2016-01-05 11:10:50,text3)脚本在2016-01-05 11:40执行,如输出脚本从10:00开始选择记录中所示。
https://stackoverflow.com/questions/34612703
复制相似问题