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

标签 hadoop filter mapreduce apache-pig

要求是过滤特定日期的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中实现?我经历了所有内置函数,但所有这些都是特定的。在时间部分没有任何作用。

如果您需要更多信息,请告诉我。

最佳答案

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);

关于hadoop - 需要在Pig脚本中按1分钟过滤记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45921245/

相关文章:

linux - 使用Cloudera服务重新启动hadoop CDH4的tasktracker和job tracker

java - 链接 Map Reduce 作业时出错

maven - 在 Windows 8 上构建 Hadoop 2.6 时出错

windows - 上层设备过滤驱动INF安装文件

每天 2 亿次写入的数据库解决方案,每月汇总查询

mapreduce - 如何正确组织 RavenDB Map/Reduce 结果?

hadoop - "AM Container"中的AM在Hadoop中是什么意思

java - 在Java8中使用过滤器和映射提取数据库列数据

angularjs - 使用 TypeScript 创建自定义 Angular 过滤器

java - mapreduce中的序号