我有一张包含开始时间和结束时间列的工作表。我想只使用pig脚本找到差异超过15分钟的列。请帮助我并加载另一种关系。
| start-time | end-time |
-------------------------
| 1157 | 1220 |
| 1300 | 1400 |
| 1310 | 1315 |
| 757 | 833 |
答案 0 :(得分:0)
在加载数据之前,请使用前导0
个数字小时格式化时间列,
data = load '/data.txt' using PigStorage(' ') as (start:chararray, end:chararray);
使用MinutesBetween
计算时差:
time_diff = foreach data generate start, end, MinutesBetween(ToDate(end, 'HHmm'), ToDate(start, 'HHmm')) as difference;
然后按条件过滤结果:
filtered = filter time_diff by difference > 15;
dump filtered;
(1157,1220,23)
(1300,1400,60)
(0757,0833,36)
答案 1 :(得分:0)
我相信我们可以使用下面的解决方案填充缺失的零
您可以通过3种方式解决此问题。 选项1:如果您安装了猪0.14版本,那么尝试这种方法
输入
2014 11 12 2013 01 02 2012 12 3 2011 5 24 2010 1 1 PigScript:
A = LOAD'input'使用PigStorage()AS(year:int,month:int,date:int); B = FOREACH A GENERATE SPRINTF('%04d-%02d-%02d',年,月,日)AS(finaldate:chararray);