Apache pig 将YYYYMMDD转换为日期格式YYYY/MM/DD

Apache pig 将YYYYMMDD转换为日期格式YYYY/MM/DD,apache-pig,Apache Pig,我正在尝试使用pig脚本将bigdecimal(YYYYMMDD)转换为日期格式(YYYY/MM/DD)。为此,我编写了以下代码 STOCK_A = LOAD '/user/cloudera/hl7' USING PigStorage('|'); data = FILTER STOCK_A BY ($1 matches '.*OBR.*'); MSH_DATA = FOREACH data GENERATE ToString($8,'yyyy-MM-dd')AS date; 我得到的输出是 2

我正在尝试使用pig脚本将bigdecimal(YYYYMMDD)转换为日期格式(YYYY/MM/DD)。为此,我编写了以下代码

STOCK_A = LOAD '/user/cloudera/hl7' USING PigStorage('|');
data = FILTER STOCK_A BY ($1 matches '.*OBR.*');
MSH_DATA = FOREACH data GENERATE ToString($8,'yyyy-MM-dd')AS date;
我得到的输出是

20140926-01-01
20140929-01-01
20141002-01-01
虽然预期的产出是

2014/09/26
2014/09/29
2014/10/02
样品有日期

20140926
20140929
20141002
我想知道,当您提供“yyyy-MM-dd”作为日期格式时,为什么预期输出是2014/09/26? 要实现您的目标,首先将$8(加载时为chararray)转换为date

我想知道,当您提供“yyyy-MM-dd”作为日期格式时,为什么预期输出是2014/09/26? 要实现您的目标,首先将$8(加载时为chararray)转换为date

如果您正在处理来自其他国家的数据,则需要输入上述时区代码。(上述在印度工作的例子)


如果您正在处理来自其他国家的数据,则需要输入上述时区代码。(上面是在印度工作的例子)

但是我有大量的行元素,我如何分配$8作为chararay?
STOCK_A=LOAD'/user/cloudera/hl7'使用PigStorage(“|”)这一行意味着加载的所有行将被分隔符“|”拆分为字符数组字段,就像您之前所做的那样;不要指定模式。只需使用上面的解决方案,并尝试阅读更多的pig文档。非常感谢它的工作。我是猪拉丁语的初学者,我一定会听从你的建议。当我把这个日期放在hive表中,并将类型设置为
date
时,它会将date的所有内容设置为null。为什么会发生这种情况?但是我有大量的行元素,我如何分配$8作为chararay?
STOCK_A=LOAD'/user/cloudera/hl7'使用PigStorage(“|”)这一行意味着加载的所有行将被分隔符“|”拆分为字符数组字段,就像您之前所做的那样;不要指定模式。只需使用上面的解决方案,并尝试阅读更多的pig文档。非常感谢它的工作。我是猪拉丁语的初学者,我一定会听从你的建议。当我把这个日期放在hive表中,并将类型设置为
date
时,它会将date的所有内容设置为null。为什么会这样?谢谢你的帮助谢谢你的帮助
MSH_DATA = FOREACH data GENERATE ToString($8,'yyyy-MM-dd')AS date;
MSH_DATA = FOREACH data GENERATE ToString(ToDate($8, 'yyyyMMdd'),'yyyy/MM/dd') AS date;
MSH_DATA = FOREACH b GENERATE ToString(ToDate($7, 'yyyyMMdd','Asia/Kolkata'),'yyyy/MM/dd') AS date;