我在Pig中有一个Chararray数据类型的日期。
我需要用文字来表达那个日期。
以下是仅包含日期的文件
06/28/2014
08/28/2014
09/17/2014
10/10/2014
像这样加载:
myinput = LOAD 'file' AS(mydate:chararray);
我需要输出
Jun
Aug
Sep
Oct
是否有可用的内置功能? 我是否需要创建一个UDF来单独提取月份?
答案 0 :(得分:0)
您可以使用子字符串
提取月份Substring(mydate,0,3)
答案 1 :(得分:0)
这可以通过内置功能或流媒体来完成。
在pig 0.12中,有ToDate函数来生成时间对象。
data = LOAD './code/pig/data/date.txt' AS (d:chararray);
month = foreach data GENERATE ToString(ToDate(d, 'MM/dd/yyyy'), 'MMM') AS month_abbr;
DUMP month;
输出如下:
(Jun)
(Aug)
(Sep)
(Oct)
创建一个名为“get_month.sh”的bash脚本
如果您使用的是Mac,内容应该是这样的:
while read line
do
echo "date -jf %m/%d/%Y ${line} +%b" | bash
done
或者根据不同的* nix系统相应地更改回波线。
此bash脚本将从标准输入中取出日期并将其转换为月份
在猪脚本中使用它,只需使用:
data = LOAD './code/pig/data/date.txt' AS (d:chararray);
month= STREAM data THROUGH `./get_month.sh` AS (month_abbr:chararray);
DUMP month;
输出如下:
(Jun)
(Aug)
(Sep)
(Oct)
猪非常灵活,这就是我爱猪的原因!