【发布时间】:2016-08-14 13:10:11
【问题描述】:
我是 Pig 和 Hadoop 世界的新手。我遇到的问题可能很简单,但我无法继续。
所以我有以下数据,这些数据基本上是一天的数据。 我需要使用 PIG 计算员工一天花费的总小时数,即第一个上班时间(他到达办公室的时间)和最后一次下班时间(一天中最后一次刷卡)之间的差异。
EmpID In_Time Out_Time
1 9:00 10:00
2 8:00 11:00
3 10:00 12:00
1 11:00 13:00
1 14:00 18:00
2 12:00 18:00
3 13:00 18:00
所以我写了下面的脚本,但它似乎没有给出正确的结果。
grunt> emprec = load '/emptime/emptime' using PigStorage() as (empid:int,in:chararray,out:chararray);
grunt> aggdata = group emprec by empid;
grunt> emptime = foreach aggdata generate (emprec.empid,MIN(emprec.in),MAX(emprec.out));
编写的脚本似乎没有得到正确的结果。
我需要的结果是
中间结果(我的理解)
EmpID In_Time Out_Time
1 9:00 18:00
2 8:00 18:00
3 10:00 18:00
需要的最终输出是 Out_Time-In_Time 的差
EmpID Total_Time
1 9:00
2 10:00
3 8:00
我已经写了最后一行以获得最小和最大时间,因此我可以减去 2 并获得在办公室花费的总时间
请注意,如果您想将时间假定为 Int 或任何其他格式,请这样做,因为这只是一个示例。
提前致谢
问候, 车坦
【问题讨论】:
标签: hadoop apache-pig bigdata