【问题标题】:how to get top n count by each group in hive如何获得蜂巢中每个组的前 n 个计数
【发布时间】:2015-03-10 06:52:30
【问题描述】:

有一些类似以下格式的数据

url                    |    ip
-----------------------+-----------------
http://aaa.com/        |    1.1.1.1
http://bbb.com/        |    1.2.3.5
http://ccc.com/        |    1.1.1.6
http://ddd.com/        |    1.2.3.4
http://ccc.com/        |    1.1.1.2
http://ccc.com/        |    1.1.1.2
http://ccc.com/        |    1.1.1.2
http://aaa.com/        |    1.1.1.1
http://bbb.com/        |    1.2.3.5

我现在尝试按 url 计算 ip 列,它是每个组中的前 n 个 ip。喜欢

url                    |    ip           |    ipcount
-----------------------+-----------------+-----------------
http://aaa.com/        |    1.1.1.1      |    2
http://aaa.com/        |    5.6.7.8      |    1
http://bbb.com/        |    1.2.3.5      |    2
http://ccc.com/        |    1.1.1.2      |    3
http://ccc.com/        |    1.1.1.6      |    1
http://ddd.com/        |    1.2.3.4      |    1

请告诉我如何编写 HQL 以在 Hive 中实现这一点?

更新:抱歉,我忘了注意我应该得到每个组中的前 N ​​条记录,例如 ...

【问题讨论】:

    标签: hadoop count hive sql-order-by hql


    【解决方案1】:

    试试:SELECT url, ip, COUNT(url) FROM tbl GROUP BY url, ip

    【讨论】:

    • 啊抱歉,我忘了注意我想获得每个组中的前 N ​​条记录...感谢您的回答。 :)
    【解决方案2】:
    SELECT url, ip, count(*) as ipcount
    from table t
    group by url, ip
    

    这应该适用于您的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      相关资源
      最近更新 更多