使用pig脚本查找小时和最小格式的时间之间的差异

时间:2017-02-20 16:40:33

标签: apache-pig

我有一张包含开始时间和结束时间列的工作表。我想只使用pig脚本找到差异超过15分钟的列。请帮助我并加载另一种关系。

| start-time | end-time |
-------------------------
| 1157       | 1220     |
| 1300       | 1400     |
| 1310       | 1315     |
| 757        | 833      |

2 个答案:

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