Apache Pig ToDate UDF 时间戳格式

Posted

技术标签:

【中文标题】Apache Pig ToDate UDF 时间戳格式【英文标题】:Apache Pig ToDate UDF Timestamp format 【发布时间】:2015-11-30 23:50:23 【问题描述】:

我在 pig 中使用 ToDate UDF 来生成日期时间字段。 输入为 yyyy-MM-dd 格式。 ToDate(sch_trans_dt,'yyyy-MM-dd','Etc/GMT+7') 在时间戳字段中生成带有冒号的值 2015-11-26T00:00:00.000-07:00 有没有办法避免时间戳中的冒号,使生成的值为 2015-11-26T00:00:00.000-0700

【问题讨论】:

【参考方案1】:

参考: http://pig.apache.org/docs/r0.12.0/func.html#to-string

ToDate 函数的返回类型是 DateTime 对象(ISO 8601 格式)。要将其转换为自定义字符串格式,我们可以通过给出 ToString 函数 所需的格式字符串作为第二个参数。

猪脚本:

A = LOAD 'input.csv' AS (datestring:chararray);
B = FOREACH A GENERATE ToString(ToDate(datestring,'yyyy-MM-dd','Etc/GMT+7'),'yyyy-MM-dd\'T\'hh:ss:mm.SZ');
DUMP B;

输入:

2015-11-26

输出:

(2015-11-26T12:00:00.0-0700)

【讨论】:

以上是关于Apache Pig ToDate UDF 时间戳格式的主要内容,如果未能解决你的问题,请参考以下文章

带有datafu的apache PIG:无法解析UDF

在哪里贡献 Apache Pig UDF?

在 Apache Pig 中运行 UDF

Pig 的 UDF 中存在“in”会导致问题

使用 java.lang.NoClassDefFoundError 在 AWS EMR 上运行 Pig UDF:org/apache/pig/LoadFunc

除了 apache.org 教程之外,还有关于 Pig UDF 的有用教程吗?