找出PIG中start_times和end_times之间的区别

时间:2014-06-27 09:07:39

标签: apache-pig

有人可以告诉我如何在PIG中找到两次之间的差异......

例如,下面是示例Start_Times和End_Times,我需要找到PIG中Start_Time和End_Time之间的差异。

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

提前致谢...

2 个答案:

答案 0 :(得分:1)

无法找到一种直截了当的方式。这是一个解决方法:

    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

答案 1 :(得分:0)

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

DEFINE ISOToUnix org.apache.pig.piggybank.evaluation.datetime.convert.ISOToUnix();

然后,像:

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

可能需要一些格式化/打字,但它应该有效。