hadoop - 如何使用 Pig 按键和值分组

标签 hadoop apache-pig bigdata hadoop-streaming

我正在使用 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;

最佳答案

我们必须根据标题对数据进行分组,对于每个组,我们可以调用 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;

输出:DUMP req_data_ordered

(SciTePress,32)
(Springer,1608)

关于hadoop - 如何使用 Pig 按键和值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286189/

相关文章:

java - 如何使用java代码设置amazon ami的hadoop配置

hadoop - IMPLICIT_CAST_TO_DOUBLE 警告 : Pig

r - 服务器上的 ff 包... read.table.ffdf "cannot change working directory"

hadoop - 如何在HBase Shell中获取表中行的自定义计数

apache-pig - 如何计算Apache Pig中字符串的长度?

hadoop - 为HDInsight HDP集群安装Hue

hadoop - Hive - 如何查询表以获取其自己的名称?

apache-spark - 如何重命名在 Dataproc Serverless 上运行的 Spark 中的 GCS 文件?

hadoop - 使用 reducer 会减慢映射器

java - 如何有效地在 Java 中对两个 TreeMap 求和?