我可以区分Hive中的每一列吗?

时间:2014-09-23 08:00:32

标签: hadoop hive hql

我想计算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。然而,这似乎是一种可怕的方式。那么可以通过仅扫描一次表来计算这些值吗?

1 个答案:

答案 0 :(得分:0)

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

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