我有一个employee表,其中address是struct数据类型,struct里面的一些值是null。那么如何找到我们没有一个带有spark sql的null的行。我得到了一个小的答案表格中我们在结构中有两个字段,但是如何找出结构类型中是否有超过100个字段..我们要创建udf还是其他approch?
df.filter($"address.city".isNotNull and $"address.pin".isNotNull).show()
提前致谢
答案 0 :(得分:1)
获取列名称:
val fields = df.select($"address.*").columns
并使用过滤器:
import org.apache.spark.sql.functions._
df.where(fields map(c => col(s"address.`$c`").isNotNull) reduce(_ and _))
要跳过空字符串,只需添加:
df.where(fields map(c => col(s"address.`$c`"))
map(c => not(trim(c) <=> "") and c.isNotNull)
reduce(_ and _))