使用猪计算并找到Hadoop中的最大数量

时间:2014-10-17 12:08:29

标签: hadoop hive apache-pig cdr

我有一个表格,其中包含A列和B列中的样本CDR数据,其中包含呼叫人和被叫人移动电话号码 我需要找到有最大呼叫次数的人(A栏) 并且还需要找到哪个号码(列B)最多被称为

表结构如下所示

调用名为

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

在上表中889578226有最多的拨出电话和77382596最多被叫号码这种方式需要获取输出

在hive中我的运行方式如下

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

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

1 个答案:

答案 0 :(得分: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)