0

我有一个表,其中包含 A 列和 B 列中的示例 CDR 数据,其中包含呼叫人和被呼叫人的手机号码,我需要找到其具有最大呼叫次数(A 列),还需要找到哪个号码(B 列) 调用最多

表结构如下

呼叫被呼叫

  • 889578226 77382596
  • 889582256 77382596
  • 889582256 7736368296
  • 7785978214 782987522

在上表中 889578226 有最多的呼出电话和 77382596 是最多被叫号码,这样需要得到输出

在蜂巢中我运行如下

SELECT calling_a,called_b, COUNT(called_b) FROM cdr_data GROUP BY calling_a,called_b;

猪中上述查询的等价代码可能是什么?

4

1 回答 1

0

阿纳斯,你能告诉我这是你所期待的还是不同的?

input.txt
a,100
a,101
a,101
a,101
a,103
b,200
b,201
b,201
c,300
c,300
c,301
d,400

PigScript:
A = LOAD 'input.txt' USINg PigStorage(',') AS (name:chararray,phone:long);
B = GROUP A BY (name,phone);
C = FOREACH B GENERATE FLATTEN(group),COUNT(A) AS cnt;
D = GROUP C BY $0;
E = FOREACH D {
                SortedList = ORDER C BY cnt DESC;
                top = LIMIT SortedList 1;
                GENERATE FLATTEN(top);
              }
DUMP E;

Output:
(a,101,3)
(b,201,2)
(c,300,2)
(d,400,1)
于 2014-10-17T13:58:47.403 回答