【问题标题】:Pig - How to cast datetime to chararrayPig - 如何将日期时间转换为 chararray
【发布时间】:2023-03-06 08:08:01
【问题描述】:

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

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

【问题讨论】:

    标签: apache-pig


    【解决方案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。

      【讨论】:

      • 我最终在您对类似主题的回答中使用了您的解决方法。没有更简单的方法似乎很奇怪。谢谢!
      猜你喜欢
      • 2011-04-14
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2011-10-05
      • 2014-01-24
      相关资源
      最近更新 更多