使用 Pig Latin 计算唯一值的出现次数

Posted

技术标签:

【中文标题】使用 Pig Latin 计算唯一值的出现次数【英文标题】:Counting the number of occurrences of unique values using Pig Latin 【发布时间】:2020-02-14 12:51:27 【问题描述】:

我正在尝试使用 Apache Pig Latin 找出 2019 年 12 月 1 日(来自 http://cran-logs.rstudio.com/)下载次数最多的 RStudio 软件包的前 5 个。我需要的列是“r_os”和“package”。这是我的代码:

A = load '2019-12-01.csv' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER');
B = FOREACH A GENERATE r_os,package;
C = DISTINCT B;
D = GROUP C BY package;
result = FOREACH C GENERATE flatten($0), COUNT($1) as package_distr;

我得到以下结果,这是错误的:

(magrittr,10)
(htmltools,10)
(httr,10)
(lubridate,10)
(ellipsis,10)

出现的次数应该更多,而不是 10。我想要的输出应该大致如下:

(magrittr,10000)
(htmltools,9876)
(httr,8700)
(lubridate,5320)
(ellipsis,3000)

知道我做错了什么吗? 谢谢!

【问题讨论】:

【参考方案1】:
result = FOREACH D GENERATE group, COUNT(C) as package_distr;

?

group 是包名,C 是您对 C 进行分组时生成的包的名称,然后我们计算。

【讨论】:

以上是关于使用 Pig Latin 计算唯一值的出现次数的主要内容,如果未能解决你的问题,请参考以下文章

计算每个唯一值的出现次数

Pandas - 计算并获取列中字符串值的唯一出现次数

使用 Pig latin 从文件中获取最大日期

熊猫计算列中每个值的出现次数

火花数据集:如何从列中获取唯一值的出现次数

如何在 Pig Latin 中进行“总结”?