Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Formatting Date in Generate Statement

Tags:

apache-pig

In Pig, I have a statement which basically appends the date to my generated values.

Data = FOREACH Input GENERATE (CurrentTime()),FLATTEN(group), COUNT(guid)oas Cnt;

The output gives me the date 2013-05-25T09:01:38.914-04:00 in ISO8601.

How can I make this just as "YYYY-MM-DD" ?

like image 981
JohnMeek Avatar asked Nov 27 '22 21:11

JohnMeek


1 Answers

You have several options:

Convert it with Pig functions :
E.g:

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;
}

OR pass the date to the script as a parameter:

pig -f script.pig -param CURR_DATE=`date +%Y-%m-%d`

OR declare it in script:

%declare CURR_DATE `date +%Y-%m-%d`;

Then refer to the variable as '$CURR_DATE' in the script.

You may also create a modified CurrentTime UDF in which you convert the DateTime object to the appropriate format with the Joda-Time library.

The easiest would be to declare the date in the beginning of the script.

like image 143
Lorand Bendig Avatar answered Jan 12 '23 14:01

Lorand Bendig