我有一个源记录,表示这样的日期:
20151104当我使用Pig加载源文件时,我定义了如下记录:
data_raw = LOAD '/user/hue/myfile.csv' USING PigStorage(',') AS
(date:datetime) 然后使用以下代码将其推送到新格式:
data_values = FOREACH data_raw GENERATE ToString(date, 'yyyyMMdd') AS
date当我将变量转储出去时,我得到:
(201511040101)0101从哪里来的?
发布于 2015-11-04 23:21:45
输入不采用ISO日期和时间格式。
将输入日期更改为20151104至2015-11-04,您将能够看到预期的结果.
参考文献:
如果您可以将输入读入为字符串,如果输入是以预期格式读取的,则不需要进行任何转换,如果不使用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
输入:
20151104PigScript :
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;输出:
DUMP B :
(2015-11-04T00:00:00.000-08:00)
DUMP C :
(2015-11-04)https://stackoverflow.com/questions/33532977
复制相似问题