HIve中count(1),count(*),count(字段名)三种统计的区别

这篇具有很好参考价值的文章主要介绍了HIve中count(1),count(*),count(字段名)三种统计的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

count(1)和count()比较
单独看三种返回数据的查询结果来看,count(
) 和 count(1) 几乎可以说是没有区别的。count(*) 和 count(1) 都会把值为 null 的行都进行统计。

第一种count()
HIve中count(1),count(*),count(字段名)三种统计的区别,hive,hadoop,数据仓库,sql
第二种count(1)
HIve中count(1),count(*),count(字段名)三种统计的区别,hive,hadoop,数据仓库,sql
可以很清楚的看到,虽然查询的结果是一样的,但是查询时间效率上count(
)用时2.674秒,而count(1)用时才0.29秒,足足差了10倍,因此在生产环境中强烈建议不要使用count(*)直接使用count(1)

第三种count(字段名)

count(字段名) 则剔除值为 null 的行后再统计计数,包括 count(distinct 字段名) 也是会剔除值为 null 的行后再去重计数
HIve中count(1),count(*),count(字段名)三种统计的区别,hive,hadoop,数据仓库,sql可以看到count(字段名)是最耗时的,查询时间打到38秒,是因为count(1)和count(*)没有被转化成MR任务,如果是数据量比较大的情况下或者同等查询条件下,count(字段名)并不会比其他两种慢

总结就是优先使用count(1)和count(字段名)文章来源地址https://www.toymoban.com/news/detail-600203.html

到了这里,关于HIve中count(1),count(*),count(字段名)三种统计的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive表字段类型转换错误解决:Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.

    假设某有数据的Hive表temp_table的字段状况如下,需要将A字段由string类型转为int类型: 字段名称 字段类型 是否为分区字段 A string 否 B int 否 C bigint 否 D string 是 在Hdfs数据库中,该表的数据是以Parquet文件格式存储的,包含多个分区。 原本在该表中的字段A的类型为int 。然而笔者

    2024年02月02日
    浏览(71)
  • 大数据开发之Hive案例篇9-Not yet supported place for UDAF ‘count‘

    一个很简单的group by和count(*) 操作,然后居然报错了 大概是在Oracle MySQL上写SQL写习惯了,以为可以这么写。 出了问题也是不知道从何排查 后面把order by子句注释掉之后,居然就可以了,那么就是order by 后面不能跟聚合函数了 于是使用了聚合函数的别名,问题搞定 修改为如下

    2024年02月06日
    浏览(42)
  • 4. count(*) 、count(1) 、count(字段) 区别

    哪种 count 性能最好? count(*) = count(1) count(字段) count( ) 是什么? count() 是一个聚合函数,函数的参数不仅可以是字段名,也可以是其他任意表达式,该函数作用是 统计符合查询条件的记录中,函数指定的参数不为 NULL 的记录有多少个 。 count(*)、 count(1) 都是检索表中所有记

    2024年02月11日
    浏览(29)
  • [hive]中的字段的数据类型有哪些

    Hive中提供了多种数据类型用于定义表的字段。以下是Hive中常见的数据类型: 布尔类型(Boolean):用于表示true或false。 字符串类型(String):用于表示文本字符串。 整数类型(Integers):包括TINYINT(1字节整数)、SMALLINT(2字节整数)、INT或INTEGER(4字节整数)、BIGINT(8字节

    2024年02月05日
    浏览(28)
  • 一百三十三、Hive——Hive外部表加载含有JSON格式字段的CSV文件数据

    在Hive的ODS层建外部表,然后加载HDFS中的CSV文件数据 注意 :CSV文件中含有未解析的JSON格式的字段数据,并且JSON字段中还有逗号 JSON数据的字段track_data只显示一部分数据,因为JSON格式数据里面也含有逗号 [{\\\"id\\\":\\\"14\\\",\\\"length\\\":5.0,\\\"height\\\":3.0,\\\"posX\\\":63.0,\\\"posY\\\":37.0,\\\"acs\\\":99.0,\\\"angle\\\":83.0,\\\"alti

    2024年02月16日
    浏览(33)
  • count(1)、count(*)和count(指定字段)之间的区别

    一、count(1)和count(*) 当表的数据量比较大,对表作分析之后,使用count(1)比使用count(*)用时多。 从执行计划看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count()的用时少些。 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。 因为count(*),自动

    2023年04月27日
    浏览(23)
  • 大数据之Hadoop数据仓库Hive

    Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。 特点: 简单、容易上手 (提供了类似 sql 的查询语言 hql),使得精通 sql 但是不了解 Java 编程的人也

    2024年02月01日
    浏览(38)
  • 二百一十、Hive——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺

    在用Flume把Kafka的数据采集写入Hive的ODS层表的HDFS文件路径后,发现HDFS文件中没问题,但是ODS层表中字段的数据却有问题,字段中的JSON数据不全 1、ODS层建静态分区外部表,Flume直接写入ODS层表的HDFS路径下 2、用get_json_object进行解析 注意 :使用JsonSerDe时,每行必须是一个完整

    2024年02月03日
    浏览(32)
  • Hive:元数据的三种部署方式

    1.内嵌模式示意图: 2.Derby数据库: Derby数据库是Java编写的内存数据库,在内嵌模式中与应用程序共享一个JVM,应用程序负责启动和停止。 初始化Derby数据库 1)在hive根目录下,使用/bin目录中的schematool命令初始化hive自带的Derby元数据库 [atguigu@hadoop102 hive]$ bin/schematool -dbType

    2024年01月17日
    浏览(35)
  • HIVE数据导入ES并避免字段空值占用空间

    1、自己下载 elasticsearch-hadoop-6.6.0.jar依赖包,根据自己es版本选择,下载地址: 2、文件上传HDFS指定位置,我这边放在 3、hive加载jar包  --注意,部分不加载“commons-httpclient-3.1.jar”可能会报错 error in initSerDe: java.lang.NoClassDefFoundError org/apache/commons/httpclient ,可以直接把包放在

    2023年04月08日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包