数据集:
我有一个(id,category)格式的数据集(data.txt),如下所示:
01,X
02,Y
03,X
04,Y
05,X
06,X
07,Z
08,Z
09,X
10,Z
目标:
我们的目标是找出哪一类在不使用自定义项的情况下拥有最多的ID。
一种方法:
我试过多次,得出的结论是,这可以通过以下一组pig语句来实现
A1 = LOAD 'data.txt' USING PigStorage(',') AS (ID:int , Category:chararray);
A2 = DISTINCT A1;
A3 = GROUP A2 BY Category;
A4 = FOREACH A3 GENERATE group AS Category, COUNT(A2.ID) AS Number;
A5 = GROUP A4 ALL;
A6 = FOREACH A5 GENERATE MAX(A4.Number);
A7 = FILTER A4 by Number == A6.$0;
A8 = FOREACH A7 GENERATE Category;
DUMP A8;
请求:
虽然这些陈述给出了预期的结果,但我对其效率并不确信。由于我是pig新手,我不确定是否有任何内置函数可以执行这些任务,从表中输出最小值或最大值的相应值。
我的要求是知道这是否可以在任何较少的步骤实现。
非常感谢
1条答案
按热度按时间w51jfk4q1#
分组后,按计数降序对分组进行排序,得到最上面的记录。