Hive - Count && Sum 使用与性能对比

简介: 使用 hive 计数时常使用 Count 和 Sum 两个函数进行统计,下面看看二者的使用方法。

一.引言

使用 hive 计数时常使用 Count 和 Sum 两个函数进行统计,下面看看二者的使用方法。

二.Count

count 方法可以统计有效行数

1.统计所有行数

select count(*) from table

image.gif

2.统计不为null的行数

select count(col) from table

image.gif

3.配合 case distinct 使用

上一篇文章使用 Hive 统计 UV,PV 中介绍了相关的使用:

A.distinct

对 uid 去重得到 uv

select count(distinct click.uid) as send_uv from table

image.gif

B.case

统计点击 click=1 的样本

select count(case when label='1' then click.uid else NULL end) from table

image.gif

C.distinct + case

通过 count 不统计 null 和 distinct + case 实现 uv 的统计

select count(distinct case when label='1' then click.uid else NULL end) as click_uv from table

image.gif

三.sum

sum 求和函数可以将某列的值进行累加,同样对 null 值进行忽略

1.统计所有行数

sum(1) 时和 count(1) 或者 count(*) 方法效果相同

select sum(1) from table

image.gif

2.对某列值进行累加

select sum(cost) from table

image.gif

3.case when

select sum(case when cost == 'none' then 0 else 100 end) from table

image.gif

四.Sum vs Count

统计总数时经常使用 count(1),count(*),sum(1) ,下面看看他们的效率如何:

单位: seconds count(*) count(1) sum(1)
第一次 83.869 78.0 72.455
第二次 80.973 77.212 60.013
第三次 70.169 64.187 67.498

整体效率看是 sum(1) 略快于 count(1),count(*) 最慢。

目录
相关文章
|
SQL 分布式计算 大数据
大数据面试题:Hive count(distinct)有几个reduce,海量数据会有什么问题
count(distinct)只有1个reduce。 为什么只有一个reducer呢,因为使用了distinct和count(full aggreates),这两个函数产生的mr作业只会产生一个reducer,而且哪怕显式指定set mapred.reduce.tasks=100000也是没用的。 当使用count(distinct)处理海量数据(比如达到一亿以上)时,会使得运行速度变得很慢,熟悉mr原理的就明白这时sql跑的慢的原因,因为出现了很严重的数据倾斜。
|
SQL HIVE 开发者
Hive 高阶--分组窗口函数--聚合函数集成分组函数(SUM)|学习笔记
快速学习 Hive 高阶--分组窗口函数--聚合函数集成分组函数(SUM)
297 0
|
SQL 存储 关系型数据库
CDP中的Hive3系列之Hive性能调优
要将数据从 RDBMS(例如 MySQL)迁移到 Hive,您应该考虑使用带有 Teradata 连接器的 CDP 中的 Apache Sqoop。Apache Sqoop 客户端基于 CLI 的工具在关系数据库和 HDFS 或云对象存储之间批量传输数据。 需要进行提取、转换和加载 (ETL) 过程的遗留系统数据源通常驻留在文件系统或对象存储中。您还可以以分隔文本(默认)或 SequenceFile 格式导入数据,然后将数据转换为 Hive 推荐的 ORC 格式。通常,为了在 Hive 中查询数据,ORC 是首选格式,因为 ORC 提供了性能增强。
465 0
|
SQL 存储 JSON
Hive性能调优工具
HQL提供了两个查看查询性能的工具:explain与analyze,除此之外Hive的日志也提供了非常详细的信息,方便查看执行性能和报错排查。
4965 0
Hive性能调优工具
|
SQL 存储 分布式计算
Flink 1.10 和 Hive 3.0 性能对比(附 Demo 演示 PPT)
Flink 作为一个统一的计算引擎,旨在提供统一的流批体验以及技术栈。Flink 在 1.9 合并了 Blink 的代码,并在 1.10 中完善了大量的功能以及性能,可以运行所有 TPC-DS 的查询,性能方面也很有竞争力,Flink 1.10 是一个生产可用的、批流统一的 SQL 引擎版本。
Flink 1.10 和 Hive 3.0 性能对比(附 Demo 演示 PPT)
|
3月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
153 1