如何使用pig按键和值分组

yh2wf1be  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(554)

我正在使用pig,这是我要分析的文本的一部分:

SciTePress: 32    
Springer: 10    
Springer: 13    
Springer: 14    
Springer: 1571

我想达到的目的是以一种上升的方式对文本进行排序。例如,我希望输出如下所示:

Springer: 1608  //( i.e. the sum of 10+13+14+1571)
SciTePress: 32

有没有一种方法可以通过使用pig来实现这一点?
这是我现在得到的输出:

Springer: 1571
SciTePress: 32  
Springer: 14  
Springer: 13    
Springer: 10

以下是我使用过的命令:

WORDS = LOAD '../filename' using PigStorage(':') AS (title: chararray, count:int);
    grpd = GROUP WORDS BY count;
    sorted = order WORDS by count desc;
    top5 = limit sorted 5;
    dump top5;
cyvaqqii

cyvaqqii1#

我们必须根据标题对数据进行分组,对于每个分组,我们可以调用sum函数来获得总和。
输入:

SciTePress: 32    
Springer: 10    
Springer: 13    
Springer: 14    
Springer: 1571

Pig脚本:

words = LOAD '/Users/muralirao/learning/pig/a.csv'  USING PigStorage(':') AS (title: chararray, title_count:int);
grp_by_title = GROUP  words BY title;
req_data = FOREACH grp_by_title GENERATE group AS title, SUM(words.title_count) AS total_count;
req_data_ordered = ORDER req_data BY total_count;

输出:转储请求数据

(SciTePress,32)
(Springer,1608)

相关问题