gpt4 book ai didi

hadoop - 如何在 pig 中执行日期汇总

转载 作者:行者123 更新时间:2023-12-02 21:30:05 26 4
gpt4 key购买 nike

我想在Pig中执行过滤条件,在其中我要过滤出属于当前date或当前小时或当前周的数据。

在输入数据中,我输入为
2016-01-05 16:59:50,text112016-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之前舍入并过滤。

如何做到这一点在 pig 。

最佳答案

输入:

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

pig 脚本:
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开始的记录。

关于hadoop - 如何在 pig 中执行日期汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34612703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com