Pig - 如何将日期时间转换为 chararray

Posted

技术标签:

【中文标题】Pig - 如何将日期时间转换为 chararray【英文标题】:Pig - How to cast datetime to chararray 【发布时间】:2013-05-29 16:37:23 【问题描述】:

我正在使用 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。

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

【问题讨论】:

【参考方案1】:

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

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

您可以通过查看SimpleDateFormat javadoc来选择您想要的格式

【讨论】:

【参考方案2】:

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

【讨论】:

我最终在您对类似主题的回答中使用了您的解决方法。没有更简单的方法似乎很奇怪。谢谢!

以上是关于Pig - 如何将日期时间转换为 chararray的主要内容,如果未能解决你的问题,请参考以下文章

pig 新手,如何使用 pig 中的键值对子集将 JSON 转换为另一个 JSON?

如何使用 apache pig 将一个包转换为多个包?

如何在 PIG 中将 XLSX 文件转换为 CSV 文件?

Pig ERROR 1075:从 UDF 接收到一个字节数组。无法确定如何将字节数组转换为字符串

Java & Pig - 是不是可以将 pig 脚本的输出转换为 Java 变量?

如何将 Pig 元组拆分为子元组?