在 spark scala 的数据框列中过滤 NULL 值

Filter NULL value in dataframe column of spark scala

我有一个数据框(df),其中包含以下内容:

1
2
3
4
5
6
+---------+--------------------+
|  col1|        col2           |
+---------+--------------------+
|colvalue1|                NULL|  
|colvalue2|col2value...        |
+------------+-----------------+

我正在尝试根据 col2 过滤行,如下所示

1
df.filter(($"col2".isNotNULL) || ($"col2" !=="NULL")  || ($"col2" !=="null")  || ($"col2".trim !=="NULL"))

但是有 NULL 的行没有被过滤。此列显示 nullable=true.

谁能告诉我我做错了什么?我正在使用 Spark 1.6。


你的 !== 符号是错误的,应该是 =!=,你不能做 $"col2".trim 并且因为你使用了与 || 的否定,所以其中一个否定总是正确的。在您的示例中, ($"col2".isNotNULL) 始终为真,因此每一行都被过滤。所以由 || 组合的个别否定应该小心。

所以正确的形式是

1
df.filter(!($"col2".isNull || ($"col2" ==="NULL") || ($"col2" ==="null")))

如果你使用内置函数 isnulltrim

甚至更好

1
df.filter(!(isnull($"col2") || (trim($"col2") ==="NULL") || (trim($"col2") ==="null")))