什么是FOREACH语句中的GROUP BY语句的等价物?

时间:2014-03-20 13:45:30

标签: apache-pig

我有以下架构:

raw3: {group: (field1: int,field2: chararray,field3: chararray),raw2: {(field1: int,field2: chararray,field4: chararray,field3: chararray,field5: boolean)}}

我要做的是提取field4的最频繁值和最频繁的field field5以及组字段(field1,field2,field3)。

我知道(尚未)允许GROUP BY使用FOREACH语句。如何在不编写UDF的情况下实现相同的功能?

示例:

input: ((1,2,3), {(1,2,a,3,x),(1,2,b,3,x),(1,2,a,3,x),(1,2,v,3,x),(1,2,f,3,z),(1,2,a,3,z)})

output: (1,2,a,3,x)

1 个答案:

答案 0 :(得分:0)

你可以展平组元组和raw2包,然后将GROUP by field1,field2,field3,field5弄平并获取计数,然后按field1,field2,field3分组并获取field5的值作为最大值计数(使用嵌套排序和限制或Piggybank的ExtremalTupleByNthField UDF)。