在Pig中,我有一个声明,基本上将日期附加到我生成的值.
Data = FOREACH Input GENERATE (CurrentTime()),FLATTEN(group), COUNT(guid)oas Cnt;
Run Code Online (Sandbox Code Playgroud)
输出给出了2013-05-25T09:01:38.914-04:00ISO8601中的日期.
我怎么能这样做"YYYY-MM-DD"呢?
Lor*_*dig 14
你有几个选择:
使用Pig函数转换它:
例如:
A = load ...
B = foreach A {
currTime = CurrentTime();
year = (chararray)GetYear(currTime);
month = (chararray)GetMonth(currTime);
day = (chararray)GetDay(currTime);
generate CONCAT(CONCAT(CONCAT(year, '-'), CONCAT(month, '-')),day) as myDate;
}
Run Code Online (Sandbox Code Playgroud)
或者将日期作为参数传递给脚本:
pig -f script.pig -param CURR_DATE=`date +%Y-%m-%d`
Run Code Online (Sandbox Code Playgroud)
或者在脚本中声明它:
%declare CURR_DATE `date +%Y-%m-%d`;
Run Code Online (Sandbox Code Playgroud)
然后'$CURR_DATE'在脚本中引用变量.
您还可以创建一个修改过的 CurrentTime UDF,在其中使用Joda-Time库将DateTime对象转换为适当的格式.
最简单的方法是在脚本开头声明日期.
小智 12
如果您使用的是Pig 0.12或更高版本,则可以使用ToString(CurrentTime(),'yyyy-MM-dd')
您可以使用任何日期时间类型而不是CurrentTime()
有关日期时间格式,请参阅http://pig.apache.org/docs/r0.12.0/func.html#to-string.
| 归档时间: |
|
| 查看次数: |
15965 次 |
| 最近记录: |