首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Pig从字符串中获取有效的日期格式

如何使用Pig从字符串中获取有效的日期格式
EN

Stack Overflow用户
提问于 2015-11-04 22:06:39
回答 1查看 5K关注 0票数 0

我有一个源记录,表示这样的日期:

代码语言:javascript
运行
复制
20151104

当我使用Pig加载源文件时,我定义了如下记录:

代码语言:javascript
运行
复制
data_raw = LOAD '/user/hue/myfile.csv' USING PigStorage(',') AS 
(date:datetime) 

然后使用以下代码将其推送到新格式:

代码语言:javascript
运行
复制
data_values = FOREACH data_raw GENERATE ToString(date, 'yyyyMMdd') AS   
date

当我将变量转储出去时,我得到:

代码语言:javascript
运行
复制
(201511040101)

0101从哪里来的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 23:21:45

输入不采用ISO日期和时间格式。

将输入日期更改为20151104至2015-11-04,您将能够看到预期的结果.

参考文献:

  1. http://www.w3.org/TR/NOTE-datetime
  2. https://pig.apache.org/docs/r0.11.1/func.html#datetime-functions

如果您可以将输入读入为字符串,如果输入是以预期格式读取的,则不需要进行任何转换,如果不使用DateTime函数来实现同样的转换。

Update:如果您以一种格式将日期作为字符串,并且希望将其转换为任何其他格式,那么如果您必须使用ToDate()和ToString()方法。

N.B:返回类型的ToDate是DateTime对象,而ToString的类型是字符串

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

输入:

代码语言:javascript
运行
复制
20151104

PigScript :

代码语言:javascript
运行
复制
A = LOAD 'date_input'  USING  PigStorage(',') AS (my_date:chararray);
B = FOREACH A GENERATE ToDate(my_date, 'yyyyMMdd') AS  my_date;
C = FOREACH B GENERATE ToString(my_date,'yyyy-MM-dd') AS my_date;

输出:

代码语言:javascript
运行
复制
DUMP B :

(2015-11-04T00:00:00.000-08:00)

DUMP C :

(2015-11-04)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33532977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档