Apache pig 查找清管器中开始和结束时间之间的差异

Apache pig 查找清管器中开始和结束时间之间的差异,apache-pig,Apache Pig,有谁能告诉我如何找到猪的两次之间的差异 例如,下面是示例开始时间和结束时间,我需要找出PIG中开始时间和结束时间之间的差异 12:31:38,14:54:04 10:18:34,13:30:56 13:37:43,15:18:57 08:15:10,11:28:17 提前感谢…使用UDF转换为UNIX时间戳,piggybank中有一个: DEFINE ISOToUnix org.apache.pig.piggybank.evaluation.datetime.convert.ISOToUnix

有谁能告诉我如何找到猪的两次之间的差异

例如,下面是示例开始时间和结束时间,我需要找出PIG中开始时间和结束时间之间的差异

12:31:38,14:54:04
10:18:34,13:30:56
13:37:43,15:18:57
08:15:10,11:28:17

提前感谢…

使用UDF转换为UNIX时间戳,piggybank中有一个:

DEFINE ISOToUnix org.apache.pig.piggybank.evaluation.datetime.convert.ISOToUnix();
然后,类似于:

a = FOREACH Dates GENERATE ISOToUnix(date2) - ISOToUnix(date1) AS diff ;

它可能需要一些格式化/键入,但应该可以工作。

找不到一种简单的方法。以下是一个解决方法:

    t = LOAD ' input/data' USING PigStorage(',') as (time1:chararray,time2:chararray);
    u = FOREACH t GENERATE SecondsBetween(ToDate(time2,'HH:mm:ss'),ToDate(time1,'HH:mm:ss')) as seconds;
    v = FOREACH u GENERATE seconds/3600 as hours,(seconds%3600)/60 as minutes,(seconds%3600)%60 as seconds;
    STORE v into 'output/data' USING PigStorage(':');
使用此代码输出示例数据:

    2:22:26
    3:12:22
    1:41:14
    3:13:7