我有一张有15列的table。
此列中的2列具有日期格式,例如:09/08/2003。一列数据是开始日期,另一列数据是结束日期。
我需要计算这两列之间的差异,并检查这个差异是否超过30天。
结果必须是一个包含列的表,该列显示的值与其他15列的值相差超过30天。脚本可能与此类似:
table = LOAD '$INPUT' AS (data_1, data_2, a1, a2, ... a13);
ggdif = (data_2 - data_1);
C = FILTER table BY (ggdif > 30) AS differ;
D = FOREACH C GENERATE a1 .. a13;
STORE D INTO '$OUTPUT' USING PigStorage('\t');
我对这个任务有一些问题:
如何计算两列值之间的差值?
如何在pig中以正确的格式输入日期?
1条答案
按热度按时间xvw2m8pv1#
只需编写一个简单的udf,将这两列作为输入。
可以是
exec(Tuple input) throws IOException {
投出input(0)
以及input(1)
至Date
然后做减法。返回整数结果。
剩下的就简单了
filter
首先,您可以简单地编写一个类准备一罐这个。
在Pig壳里
休息很简单,我想你可以把剩下的填满。