如何在猪中进行日期综述

时间:2016-01-05 13:18:30

标签: hadoop apache-pig

我想在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之前进行整理和过滤。

如何在猪身上实现这一目标。

1 个答案:

答案 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开始选择了记录。