Apache pig 使用pig脚本以小时和分钟格式查找时间之间的差异
我有一张有开始时间和结束时间列的工作表。我只想使用pig脚本查找差异超过15分钟的列。请帮我把它放到另一个关系中Apache pig 使用pig脚本以小时和分钟格式查找时间之间的差异,apache-pig,Apache Pig,我有一张有开始时间和结束时间列的工作表。我只想使用pig脚本查找差异超过15分钟的列。请帮我把它放到另一个关系中 | start-time | end-time | ------------------------- | 1157 | 1220 | | 1300 | 1400 | | 1310 | 1315 | | 757 | 833 | 在加载数据之前,将时间列的格式设置为前导的0,以单位小时为单位 data
| start-time | end-time |
-------------------------
| 1157 | 1220 |
| 1300 | 1400 |
| 1310 | 1315 |
| 757 | 833 |
在加载数据之前,将时间列的格式设置为前导的
0
,以单位小时为单位
data = load '/data.txt' using PigStorage(' ') as (start:chararray, end:chararray);
使用以下公式计算时间差:
然后根据以下条件过滤结果:
filtered = filter time_diff by difference > 15;
dump filtered;
(1157,1220,23)
(1300,1400,60)
(0757,0833,36)
我相信我们可以使用下面的解决方案来填充缺失的零 您可以用三种方法解决此问题。
选项1:如果您安装了pig 0.14版本,请尝试此方法 输入
如果我们可以在ToDate方法中添加“hmm”,我们就不必添加前导零,对吗?如果在小时数中有两个数字,则该方法将不起作用。
filtered = filter time_diff by difference > 15;
dump filtered;
(1157,1220,23)
(1300,1400,60)
(0757,0833,36)
2014 11 12
2013 01 02
2012 12 3
2011 5 24
2010 1 1
PigScript:
A = LOAD 'input' USING PigStorage() AS(year:int,month:int,date:int);
B = FOREACH A GENERATE SPRINTF('%04d-%02d-%02d',year,month,date) AS (finaldate:chararray);