Hive之distinct多字段中出现null问题

更新时间:2023-07-11 20:18:02 阅读: 评论:0

Hive之distinct多字段中出现null问题
在使⽤Hive以多个字段作为唯⼀性依据进⾏统计时,如果某个字段出现⼤量null值,会发⽣统计结果不准确问题,解决办法可以使⽤coalesce函数对空值进⾏替换。uea大学
导致统计值异常的原因主要是因为:1. 所有的null值会被归并到⼀项;2. count结果并不会统计null项
假设原来是以及A,B两个字段去重后统计结果:
lect count(distinct A,B) from tableName where xxx;
在实践中发现A,B都可能为空值,⽽且B值出现空值的概率⾮常⼤,在这种情况下,发现统计结果与预计相差较⼤。甚⾄在B值全为空时,统计结果为0,此时需要对A,B出现的空值,进⾏替换,⽐如下⾯将其替换为0;
洋番薯>北舞堂实际上当A,B任⼀为NULL时, distinct结果项即为NULL(注意是NULL, 空字符串可以正常计数)水煎包怎么做
lect count(distinct coalesce(A,'0'),coalesce(B,'0')) from tableName where xxx;
贵族英语关于coalesce函数
将空值替换成其他值,返回第⼀个⾮空值书法古诗
COALESCE(expression_1, expression_2, ...,expression_n)依次计算各参数表达式,遇到⾮null值即停⽌并返回该值。如果所有的表达式都是空值,最终将返回⼀个空值。
关于Hive distinct
使⽤disticnt函数,所有的数据只会shuffle到⼀个reducer上,导致reducer数据倾斜严重,当数据量较⼤时,运⾏速度较慢。
水牛英语
拔河技巧可以通过group by进⾏优化
lect count(*) from (lect coalesce(A,'0'),coalesce(B,'0') from tableName where xx group by A,B)t;
此外hive中还有order by,sort by, distribute by, cluster by,可依据具体场景选择使⽤。

本文发布于:2023-07-11 20:18:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1077483.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:统计   空值   结果
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图