我想在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之前进行整理和过滤。
如何在猪身上实现这一目标。
答案 0 :(得分:0)
输入:
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开始选择了记录。