spark数据帧分组不计算空值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark数据帧分组不计算空值相关的知识,希望对你有一定的参考价值。
我有一个spark DataFrame,它按聚合计数的列分组:
df.groupBy('a').agg(count("a")).show
+---------+----------------+
|a |count(a) |
+---------+----------------+
| null| 0|
| -90| 45684|
+---------+----------------+
df.select('a').filter('aisNull').count
回报
warning: there was one feature warning; re-run with -feature for details
res9: Long = 26834
这清楚地表明最初没有计算空值。
这种行为的原因是什么?我希望(如果null
at全部包含在分组结果中)以正确查看计数。
答案
是的,应用于特定列的count
不计算空值。如果要包含空值,请使用:
df.groupBy('a).agg(count("*")).show
另一答案
这种行为的原因是什么?
SQL-92标准。 In particular(强调我的):
设T是<set function specification>的参数或参数源。
如果指定COUNT(*),则结果是T的基数。
否则,让TX成为单列表,它是将<value expression>应用于T的每一行并消除空值的结果。
如果指定了DISTINCT,则让TXA成为从TX中消除冗余重复值的结果。否则,让TXA成为TX。
如果指定了COUNT,则结果是TXA的基数。
以上是关于spark数据帧分组不计算空值的主要内容,如果未能解决你的问题,请参考以下文章