Spark数据框选择在该行的任何列中至少有一个空或空白的行

use*_*122 2 scala apache-spark

从一个数据框我想创建一个新的数据框,其中任何列中的至少一个值在spark 1.5/scala中为null或空白.

我正在尝试编写一个generalize函数来创建这个新的数据帧.我传递数据帧和列列表并创建记录.

谢谢

Psi*_*dom 7

样本数据:

val df = Seq((null, Some(2)), (Some("a"), Some(4)), (Some(""), Some(5)), (Some("b"), null)).toDF("A", "B")

df.show
+----+----+
|   A|   B|
+----+----+
|null|   2|
|   a|   4|
|    |   5|
|   b|null|
+----+----+  
Run Code Online (Sandbox Code Playgroud)

您可以构造条件为,假设空白表示空字符串:

import org.apache.spark.sql.functions.col
val cond = df.columns.map(x => col(x).isNull || col(x) === "").reduce(_ || _)

df.filter(cond).show
+----+----+
|   A|   B|
+----+----+
|null|   2|
|    |   5|
|   b|null|
+----+----+
Run Code Online (Sandbox Code Playgroud)