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

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

最佳答案

如果只希望每列的唯一计数,则可以使用count distinct

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

关于hadoop - 我可以区分Hive中的每一列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25989912/

相关文章:

mysql - 执行 concat_ws 和 collect_list 后,Hive Coalesce 函数未返回预期结果

hive - 为什么 Spark SQL 使用来自 Hive 的 hive-site.xml 会失败并显示 "NumberFormatException: For input string: "1s""?

sql - 我们可以在用于加入 Hive 查询的字段上使用 split 函数吗

java - 以下在 where 子句中使用 null 的 HQL 查询有什么区别?

java - 在 Java 持久性中较旧的查询

validation - 加载到Hadoop MR之前的文件验证

hadoop - 通过 HUE 创建的 Oozie 工作流的 Rest API

hadoop - 如何在不使用时间戳的情况下在配置单元中查找最近更新的值

hibernate - 如何仅删除前 100 行?

hadoop - hadoop文件存储在哪些节点上