【问题标题】:Can I distinct each column in Hive?我可以区分 Hive 中的每一列吗?
【发布时间】:2014-09-23 08:00:32
【问题描述】:

我想计算 Hive 中几列的基数。

比如表格是这样的

------------------------------------------
|   A     |       B      |   C  |    D   |
------------------------------------------
| Windows | C:\Users\aa  |   0  |  1234  |
------------------------------------------
| Windows | D:\Videos    |   1  |  2345  |
------------------------------------------
| Linux   | /usr/local   |   0  |  1234  |
------------------------------------------
|  OS X   | /Users/aa    |   0  |  5678  |
------------------------------------------

A、C、D 列的基数分别为 3、2、3。

天真的解决方案是在每一列上运行SELECT DISTINCT。然而,这似乎是一种可怕的方式。那么是否可以通过只扫描一次表来计算这些值?

【问题讨论】:

    标签: hadoop hive hql


    【解决方案1】:

    如果您只想要每列的唯一计数,您可以使用count distinct

    select 
        count(distinct a), 
        count(distinct c), 
        count(distinct d)
    from mytable
    

    【讨论】:

    • @DANGFan 这取决于您希望返回结果的方式,即如果在单个列中返回 3 列的不同值,您可以使用 select distinct from ... union ...
    • 在这个例子中我需要三列。
    • @DANGFan 我想你必须做 3 次选择然后
    • 我现在使用select distinct a, c, d 并编写另一个程序进行计算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多