有人可以告诉我如何在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
提前致谢...
答案 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 ;
可能需要一些格式化/打字,但它应该有效。