Class ISOSecondsBetween

  extended by org.apache.pig.EvalFunc<Long>
      extended by org.apache.pig.piggybank.evaluation.datetime.diff.ISOSecondsBetween

public class ISOSecondsBetween
extends EvalFunc<Long>

ISOSecondsBetween returns the number of seconds between two ISO8601 datetimes as a Long Jodatime: ISO8601 Date Format: Example usage: REGISTER /Users/me/commiter/piggybank/java/piggybank.jar ; REGISTER /Users/me/commiter/piggybank/java/lib/joda-time-1.6.jar ; DEFINE ISOYearsBetween org.apache.pig.piggybank.evaluation.datetime.diff.ISOYearsBetween(); DEFINE ISOMonthsBetween org.apache.pig.piggybank.evaluation.datetime.diff.ISOMonthsBetween(); DEFINE ISODaysBetween org.apache.pig.piggybank.evaluation.datetime.diff.ISODaysBetween(); DEFINE ISOHoursBetween org.apache.pig.piggybank.evaluation.datetime.diff.ISOHoursBetween(); DEFINE ISOMinutesBetween org.apache.pig.piggybank.evaluation.datetime.diff.ISOMinutesBetween(); DEFINE ISOSecondsBetween org.apache.pig.piggybank.evaluation.datetime.diff.ISOSecondsBetween(); ISOin = LOAD 'test.tsv' USING PigStorage('\t') AS (dt:chararray, dt2:chararray); DESCRIBE ISOin; ISOin: {dt: chararray,dt2: chararray} DUMP ISOin; (2009-01-07T01:07:01.000Z,2008-02-01T00:00:00.000Z) (2008-02-06T02:06:02.000Z,2008-02-01T00:00:00.000Z) (2007-03-05T03:05:03.000Z,2008-02-01T00:00:00.000Z) ... diffs = FOREACH ISOin GENERATE ISOYearsBetween(dt, dt2) AS years, ISOMonthsBetween(dt, dt2) AS months, ISODaysBetween(dt, dt2) AS days, ISOHoursBetween(dt, dt2) AS hours, ISOMinutesBetween(dt, dt2) AS mins, ISOSecondsBetween(dt, dt2) AS secs; DESCRIBE diffs; diffs: {years: long,months: long,days: long,hours: long,mins: long,secs: long} DUMP diffs; (0L,11L,341,8185L,491107L,29466421L) (0L,0L,5,122L,7326L,439562L) (0L,-10L,-332,-7988L,-479334L,-28760097L)

Field Summary
Fields inherited from class org.apache.pig.EvalFunc
log, pigLogger, reporter, returnType
Constructor Summary
Method Summary
 Long exec(Tuple input)
          This callback method must be implemented by all subclasses.
 List<FuncSpec> getArgToFuncMapping()
          Allow a UDF to specify type specific implementations of itself.
 Schema outputSchema(Schema input)
          Report the schema of the output of this UDF.
Methods inherited from class org.apache.pig.EvalFunc
finish, getCacheFiles, getLogger, getPigLogger, getReporter, getReturnType, getSchemaName, isAsynchronous, progress, setPigLogger, setReporter, warn
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public ISOSecondsBetween()
Method Detail


public Long exec(Tuple input)
          throws IOException
Description copied from class: EvalFunc
This callback method must be implemented by all subclasses. This is the method that will be invoked on every Tuple of a given dataset. Since the dataset may be divided up in a variety of ways the programmer should not make assumptions about state that is maintained between invocations of this method.

Specified by:
exec in class EvalFunc<Long>
input - the Tuple to be processed.
result, of type T.


public Schema outputSchema(Schema input)
Description copied from class: EvalFunc
Report the schema of the output of this UDF. Pig will make use of this in error checking, optimization, and planning. The schema of input data to this UDF is provided.

outputSchema in class EvalFunc<Long>
input - Schema of the input
Schema of the output


public List<FuncSpec> getArgToFuncMapping()
                                   throws FrontendException
Description copied from class: EvalFunc
Allow a UDF to specify type specific implementations of itself. For example, an implementation of arithmetic sum might have int and float implementations, since integer arithmetic performs much better than floating point arithmetic. Pig's typechecker will call this method and using the returned list plus the schema of the function's input data, decide which implementation of the UDF to use.

getArgToFuncMapping in class EvalFunc<Long>
A List containing FuncSpec objects representing the EvalFunc class which can handle the inputs corresponding to the schema in the objects. Each FuncSpec should be constructed with a schema that describes the input for that implementation. For example, the sum function above would return two elements in its list:
  1. FuncSpec(this.getClass().getName(), new Schema(new Schema.FieldSchema(null, DataType.DOUBLE)))
  2. FuncSpec(IntSum.getClass().getName(), new Schema(new Schema.FieldSchema(null, DataType.INTEGER)))
This would indicate that the main implementation is used for doubles, and the special implementation IntSum is used for ints.

Copyright © ${year} The Apache Software Foundation