Spark DataFrame 获取所有列的空计数

Spark DataFrame Get Null Count For All Columns

我有一个 DataFrame,我想在其中获取总空值计数,并且我有以下一般对所有列执行此操作的方法:

首先我的 DataFrame 只包含一列(为简单起见):

val recVacDate = dfRaw.select("STATE")

当我使用简单的过滤器进行打印时,我看到了以下内容:

val filtered = recVacDate.filter("STATE is null")
println(filtered.count()) // Prints 94051

但是当我使用下面这段代码时,结果只得到 1,我不明白为什么?

val nullCount = recVacDate.select(recVacDate.columns.map(c => count(col(c).isNull || col(c) === "" || col(c).isNaN).alias(c)): _*) 
println(nullCount.count()) // Prints 1

关于 nullCount 有什么问题有什么想法吗?该列的数据类型是字符串。

这种修复方式:

df.select(df.columns.map(c => count(when(col(c).isNull || col(c) === "" || col(c).isNaN, c)).alias(c)): _*)

注意在计数后使用 when 子句。