0

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

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

然后我加 2 小时

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

4

1 回答 1

6

使用最新版本的 Pig(0.11.0) 应该是可能的。但是小时数(时间)应该按照ISO8601 Duration Format. 它提供了一个类AddDuration,允许我们添加一个带有 Duration 对象的 DateTime 对象。您可以在此页面上找到有关 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)
于 2013-06-25T21:06:17.417 回答