我想创建一个新的数据框,其中任何列中的至少一个值在spark 1.5 / scala中为null或为空。
我正在尝试编写一个generalize函数来创建这个新的数据帧。我传递数据框和列列表并创建记录。
由于
答案 0 :(得分:6)
示例数据:
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|
+----+----+
您可以将条件构造为,假设空白表示空字符串:
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|
+----+----+