首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用蜂箱/猪找到唯一连接的数目

如何使用蜂箱/猪找到唯一连接的数目
EN

Stack Overflow用户
提问于 2015-06-10 00:42:08
回答 2查看 334关注 0票数 2

我有一个样本表如下所示:

代码语言:javascript
复制
caller   receiver 
100         200
100         300
400         100
100         200

我需要找到每个号码的唯一连接数。对于例: 100将有200,300和400这样的连接。

我的产出应该是:

代码语言:javascript
复制
100      3  
200      1  
300      1  
400      1

我正在用蜂巢来尝试这个。如果蜂巢做不到,那就可以用猪来做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 07:42:49

这会解决你的问题。

代码语言:javascript
复制
 select q1.caller,count(distinct(q1.receiver)) from 
(select caller , receiver from test_1 group by caller,receiver 
union all 
select receiver as caller,caller as receiver from test_1 group by receiver,caller)q1 group by q1.caller;
票数 2
EN

Stack Overflow用户

发布于 2015-06-10 03:23:53

下面是实现所需的方法(虽然我并不完全相信它是最优的,但我会让您来进行优化)。您将需要这个罐子,它非常直接地如何构建。

查询:

代码语言:javascript
复制
add jar ./brickhouse-0.7.1.jar; -- name and path of yours will be different
create temporary function combine_unique as 'brickhouse.udf.collect.CombineUniqueUDAF';

select connection
  , size(combine_unique(arr)) c
from (
  select connection, arr
  from (
    select caller as connection
      , collect_set(receiver) arr
    from some_table
    group by caller ) x
  union all
  select connection, arr
  from (
    select receiver as connection
      , collect_set(caller) arr
    from some_table
    group by receiver ) y ) f
group by connection

输出:

代码语言:javascript
复制
connection    c
100           3
200           1
300           1
400           1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30745223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档