我有以下架构:
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)
答案 0 :(得分:0)
你可以展平组元组和raw2包,然后将GROUP by field1,field2,field3,field5弄平并获取计数,然后按field1,field2,field3分组并获取field5的值作为最大值计数(使用嵌套排序和限制或Piggybank的ExtremalTupleByNthField UDF)。