有没有办法在猪中添加日期时间?

时间:2013-06-25 20:25:03

标签: hadoop apache-pig

我想在猪身上做的事情在sql中很常见。 我的日期字段的形式为yyy-mm-dd hh:mm:ss,我有另一个字段,其中包含一个表示小时数的整数。有没有办法轻松地将整数添加到datetime字段,以便我们得到我们对时钟数学的期望结果。

示例:日期是2013-06-01:23:12:12。

然后我加2小时

我应该得到2013-06-02 01:12:12。

1 个答案:

答案 0 :(得分:6)

最新发布的Pig(0.11.0)应该是可能的。但是小时数(时间)应该是ISO8601 Duration Format。它提供了类AddDuration,它允许我们使用Duration对象添加DateTime对象。您可以在此page找到有关AddDuration的更多信息。

修改:

是的,您可以添加负数小时。我在我的Ubuntu盒子上试过这个:

输入:

2009-01-07T01:07:01.000Z,PT1S
2008-02-06T02:06:02.000Z,PT1M
2007-03-05T03:05:03.000Z,PT-1H

查询:

grunt> a = LOAD '/pig.txt' USING PigStorage(',') AS (dt:datetime, dr:chararray);
grunt> b = FOREACH a GENERATE AddDuration(dt, dr) AS dt1;
grunt> dump b; 

输出:

(2009-01-07T01:07:02.000Z)
(2008-02-06T02:07:02.000Z)
(2007-03-05T02:05:03.000Z)