我要求发出与组相对应的所有记录,仅在满足条件时。以下是别名为“SAMPLE_DATA”的示例数据集。
Col-1 | Col-2 | Col-3
-------------------------
2 | 4 | 1
2 | 5 | 2
---- ---- ---
4 | 5 | 1
4 | 6 | 2
结果应该是:
$value=0;
if ($value !== '')
{
//do something
}
生成了两组。生成第一组,因为4,5的最大值是“5”(满足我们的条件> = 5)。对于第二组(6> = 5)也是如此。
因为我将对大数据集操作执行此操作,例如distinct和join将是过度的。出于这个原因,我提出了一个伪代码和一个分组来执行此操作。
希望我提供了足够的信息。提前谢谢。
我将在庞大的数据集上执行此操作。像distinct和join这样的操作对系统来说太过分了。出于这个原因,我提出了这种分组方法。
答案 0 :(得分:0)
请尝试以下代码并查看..
这个解决方案有点冗长,但它会起作用
self.context['user']
O / P:
numbers = LOAD '/home/user/inputfiles/c1.txt' USING PigStorage(',') AS(c1:int,c2:int,c3:int);
num_grp = GROUP numbers by c1;
num_each = FOREACH num_grp
{
max_each = MAX(numbers.c2);
generate flatten(group) as temp_c1, (max_each >= 5 ?1 :0) as indicator;
};
num_each_filtered = filter num_each BY indicator == 1;
num_joined = join numbers BY c1,num_each_filtered by tem_c1;
num_output = FOREACH num_joined GENERATE c1,c2,c3;
dump num_output;