gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:33:13 24 4
gpt4 key购买 nike

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

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来自哪里?

最佳答案

输入的不是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


如果可以将输入读取为String且输入格式为预期格式,则无需进行任何转换,如果不使用DateTime函数来实现相同的转换。

更新:如果您将Date作为一种格式的字符串,并且希望将其转换为任何其他格式,则必须使用ToDate()和ToString()方法。

N.B :ToDate的返回类型为DateTime对象,ToString的返回类型为String

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



输入:
20151104

PigScript:
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)

关于hadoop - 如何使用Pig从字符串中获取有效的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33532977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com