【问题标题】:Count frequency of values in a column in PIG?计算 PIG 中列中值的频率?
【发布时间】:2013-12-31 18:22:56
【问题描述】:

我有这样的事情:

ColA ColB
a    xxx
b    yyy
c    xxx
d    yyy
e    xxx

我需要找出ColB 的每个值出现的次数。

输出:

xxx 3
yyy 2

这是我一直在尝试的:

考虑到A 有我的数据,

grunt> B = GROUP A by ColB;
grunt> DESCRIBE B;
B: {group: chararray,A: {(ColA: chararray,ColB: chararray)}}

现在我很困惑,我应该这样做吗?

grunt> C = FOREACH B GENERATE COUNT(B.ColB)

所以我需要输出是这样的,

xxx 3
yyy 2

【问题讨论】:

    标签: hadoop mapreduce apache-pig cloudera


    【解决方案1】:

    我想通了。

    C = FOREACH B GENERATE GROUP AS ColB, COUNT(A) as count;
    

    【讨论】:

    • 嗨,对我来说它正在显示-无效的场投影。架构中不存在投影字段 [GROUP]:group:bytearray,A:bag{:tuple(ColA:bytearray,ColB:bytearray)}。
    • 我和你的@UnmeshaSreeVeni 一样。链接已损坏...您做了什么?
    【解决方案2】:

    'group as' 使用小写字母,它适用于我:

    C = FOREACH B GENERATE group as ColB, COUNT(A) as count;
    

    【讨论】:

    • 那是因为关键字不区分大小写...加上这个问题已经七年了...
    • 但是如果你使用 GROUP AS 就不行了。有人可能会觉得它很有用。
    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2020-03-10
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多