Apache pig 使用pig脚本以小时和分钟格式查找时间之间的差异

Apache pig 使用pig脚本以小时和分钟格式查找时间之间的差异,apache-pig,Apache Pig,我有一张有开始时间和结束时间列的工作表。我只想使用pig脚本查找差异超过15分钟的列。请帮我把它放到另一个关系中 | start-time | end-time | ------------------------- | 1157 | 1220 | | 1300 | 1400 | | 1310 | 1315 | | 757 | 833 | 在加载数据之前,将时间列的格式设置为前导的0,以单位小时为单位 data

我有一张有开始时间和结束时间列的工作表。我只想使用pig脚本查找差异超过15分钟的列。请帮我把它放到另一个关系中

| 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);