【问题标题】:Need to filter records by 1 minute in Pig script需要在 Pig 脚本中按 1 分钟过滤记录
【发布时间】:2017-08-28 14:20:57
【问题描述】:

要求是在 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 和 end time == 02:06:00

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

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

【问题讨论】:

    标签: hadoop filter mapreduce apache-pig


    【解决方案1】:

    GetMinute 应该可以帮助您过滤记录。使用第一列创建一个新列分钟并使用它来过滤记录。

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

    如果您的 date_time 列已经是 datetime 数据类型,则在没有 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 2020-10-30
      • 2016-12-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多