猪中的 ToDate 函数

Posted

技术标签:

【中文标题】猪中的 ToDate 函数【英文标题】:ToDate function in pig 【发布时间】:2014-07-14 09:16:33 【问题描述】:

我有一个以日期作为列之一的输入文件。在加载数据时我提到它是chararray。我想使用 ToDate(userstring, format) function 将其更改为日期格式。 我的日期是 dd/mm/yyyy 格式。脚本如下,

mydata = load '/testinput' using PigStorage(';') as (pdate:chararray, time:chararray, gpower:double, sm1: double, sm2:double, sm3:double);

getdate = foreach mydata generate ToDate(pdate, 'dd/mm/yyyy'), time, gpower, sm1, sm2, sm3;

这给了我错误代码 1066。

谁能帮我解决这个问题。

【问题讨论】:

你是什么版本的猪? 您好,我使用的版本是Pig 0.12.0 你能展示一些示例输入吗? pig 也使用 java simpledateformat 来表示 todate,因此 mm 应该是 MM。 Fred 下面是样本数据, 日期;时间;Global_active_power;Sub_metering_1;Sub_metering_2;Sub_metering_3 16/12/2006;17:24:00;4.216;0.000;1.000;17.000 【参考方案1】:

你应该去掉输入第一行的标题。

此外,您应该使用dd/MM/yyyy 作为日期格式(请参阅http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)。

【讨论】:

Fred,在处理时我正在删除标题。我留着供参考。我尝试了您提到的选项,现在工作正常。非常感谢你 :)。如果你能帮助我,我还有一个疑问。我在处理时将标题写入其他文件。但我无法在写入输出文件时附加标题。我使用“联合”函数来合并标题和数据值,但标题进入底部。有什么功能可以加header吗? 如果对您有帮助,请接受我的回答。对于您的其他问题,请参阅此答案:***.com/questions/13696036/export-from-pig-to-csv 我之前曾尝试过 PigStorage('\t','-schema') 选项,但它对我没有帮助,因为它单独存储标题部分。我想要标题作为第一条记录:(。 如答案中所述:您要做的是从您的 pigscript 发出hadoop fs -getmerge /user/hadoop/csvoutput ./output.csv

以上是关于猪中的 ToDate 函数的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们需要在猪中运行平均函数之前对关系进行分组

oracle todate函数

带有 ToDate 内置函数的 PIg- NullPointerException

oracle todate函数

猪拉丁语中 ToDate 和 MonthsBetween 函数的问题

避免个别行在 Pig 中的 ToDate 中出现异常