【问题标题】:how to take count of null values from table using spark-scala?如何使用 spark-scala 从表中计算空值?
【发布时间】:2018-09-05 21:22:54
【问题描述】:

我有表名“数据”,它有 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 列,每列包含一些空值我只想对表的每一列进行空计数,这是获取空计数的最佳方法!

提前致谢!

【问题讨论】:

  • 您能给我们提供一个输出示例吗?你尝试了什么?
  • 我只尝试了一列 df.col("column name").isNull.count()
  • 您可以使用 foldLeft 遍历列
  • @BeyhanGül 你能给我一个 foldLeft 函数的例子吗!
  • 如果你能清楚地描述你的任务就好了。有几种方法可以做到这一点,可以应用于不同的情况。

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


【解决方案1】:

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

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

【讨论】:

  • 好的,但是如果我有 100 列,那我该如何取 null 计数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 2022-08-06
相关资源
最近更新 更多