需要在 Pig 脚本中按 1 分钟过滤记录

Need to filter records by 1 minute in Pig script

要求是在特定日期过滤 Pig 中的记录。所以示例数据如下:

date_time                visits           count
2017-08-25 02:05:11        12345            5
2017-08-25 02:05:31        23456            7
2017-08-25 02:05:51        34567            1
2017-08-25 02:06:40        13423            3

在上面的例子中,我们只需要前 3 个命中。所以过滤条件为start_time == 02:05:00 结束时间== 02:06:00

有什么方法可以在 Pig 中实现吗?我浏览了所有内置函数,但它们都是特定于日期的。 None在时间部分工作。

如果您需要这方面的更多信息,请告诉我。

GetMinute 应该可以帮助您过滤 records.Create 使用第一列的新列分钟并使用它来过滤记录。

请注意,您可以在其他小时时间戳中使用相同的分钟值,在这种情况下,您可以创建一个小时列并在过滤器中使用它。

如果您的 date_time 列已经是日期时间数据类型,则在没有 Todate() 函数的 date_time 列上应用 GetHour(),GetMinute()。

B = FOREACH A GENERATE date_time,GetHour(ToDate(date_time,'yyyy-MM-dd HH:mm:ss')) as hour,GetMinute(ToDate(date_time,'yyyy-MM-dd HH:mm:ss')) as minute,visits,counts;
C = FILTER B BY (hour == 2 AND minute == 5);