猪 - 如何操纵和比较日期?

sha*_*oux 1 hadoop apache-pig

我有一个包含这样的条目的文件:

1,1,07 2012,07 2013,11,blablabla
Run Code Online (Sandbox Code Playgroud)

两个第一个字段是ID.第三个是开始日期(月份),第四个是结束日期.第五个字段是这两个日期之间的月数.最后一个字段包含文本.

这是我的猪代码加载这些数据:

f = LOAD 'file.txt' USING PigStorage(',') AS (id1:int, id2:int, date1:chararray, date2:chararray, duration:int, text:chararray);
Run Code Online (Sandbox Code Playgroud)

我想过滤我的文件,以便我只保留date2从今天起不到三年的条目.猪可能吗?

谢谢.

小智 6

无需编写自定义函数:

在Pig 0.11中,您可以使用ToDate()函数将date2字段从chararray转换为datetime数据类型,然后使用YearsBetween()获取CurrentTime()和date2之间的差异,并根据它进行过滤.例如:

g = FILTER f BY YearsBetween(CurrentTime(),ToDate(date2 + ' 01', 'yyyy MM dd'))<3
Run Code Online (Sandbox Code Playgroud)