4

我正在使用 CurrentTime(),它是一种日期时间数据类型。但是,我需要它作为一个字符数组。我有以下内容:

A = LOAD ...
B = FOREACH A GENERATE CurrentTime() AS todaysDate;

我尝试了各种方法,例如:

B = FOREACH A GENERATE (chararray)CurrentTime() AS todaysDate;

但是,我总是得到 ERROR 1052: Cannot cast datetime to chararray。

有谁知道我该怎么做?顺便说一句,我对猪很陌生。提前致谢!

4

2 回答 2

6

我有一个类似的问题,我不想使用另一个答案中描述的自定义 UDF。我对 Pig 很陌生,但它似乎是一个非常基本的操作来证明需要 UDF。这个命令对我很有用:

B = FOREACH A GENERATE ToString(yourdatetimeobject, 'yyyy-MM-dd\'T\'HH:mm:ssz') AS yourfieldname;

您可以通过查看SimpleDateFormat javadoc来选择所需的格式

于 2014-10-03T13:10:18.033 回答
3

您需要创建一个自定义 UDF来进行转换(例如:参见CurrentTime() implementation)。或者,您可以查看我对类似主题的回答以获取解决方法。
如果您在 AWS 上,请使用他们的DATE_TIME UDF。

于 2013-05-29T17:39:54.230 回答