如何使用spark-scala从表中获取空值计数?

时间:2018-09-05 10:39:32

标签: scala apache-spark apache-spark-sql

我有表名“ data”,它有5列,每列包含一些空值。 我想对每列的空值进行计数,如何为该结果编写代码!它很容易计算一列,但是我如何编写代码来计算表的每一列。

样本:

+----------------+----------------+--------+---------+-------------+
| 2              |3               |4       |  5      |6            |
+----------------+----------------+--------+---------+-------------+
|null             |1               | null   |null     |null         |
|null             |null            | null   |null     |asdc         |
|null             |23              | 23     |null     |null         |
|null             |null            | null   |23       |41           |
|24               |3               | 35     |null     |null         |
|null             |null            | null   | 1       |wef          |
|null             |32              | 54     |null     |45           |
|null             |null            | null   |123      |null         |
|w411             |31              | 12     |null     |null         |
|null             |null            | null   |11       |null         |
+----------------+----------------+--------+---------+-------------+

如何对每列进行空计数

我有40个表,这些表包含5或6或10列,每列都包含一些空值,我只想对表的每一列进行空计数,这是对空值进行计数的最佳方法!

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您不想删除空行/列,并且不需要在工作中进行任何其他计算,那么这应该适用于您:

 df.select(df.columns.map(colName => {
    count(when(col(colName).isNull, true)) as s"${colName}_nulls_count"
  }): _*)
  .show(10) // or save result somewhere