我需要有关此 pig 脚本的帮助。我只是得到一个记录。我正在选择 2 列并对另一列进行计数(不同),同时还使用 where like 子句来查找特定描述 (desc)。
这是我正在尝试编写的带有 pig 的 sql。
/*
For example in sql:
select domain, count(distinct(segment)) as segment_cnt
from table
where desc='ABC123'
group by domain
order by segment_count desc;
*/
A = LOAD 'myoutputfile' USING PigStorage('\u0005')
AS (
domain:chararray,
segment:chararray,
desc:chararray
);
B = filter A by (desc=='ABC123');
C = foreach B generate domain, segment;
D = DISTINCT C;
E = group D all;
F = foreach E generate group, COUNT(D) as segment_cnt;
G = order F by segment_cnt DESC;
最佳答案
您可以对每个域进行 GROUP,然后使用 nested FOREACH 计算每个组中不同元素的数量。语法:
D = group C by domain;
E = foreach D {
unique_segments = DISTINCT C.segment;
generate group, COUNT(unique_segments) as segment_cnt;
};
关于hadoop - 使用 pig latin 选择不同的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9247296/