在火花阶的数据框列过滤NULL值(Filter NULL value in dataframe co

2019-10-30 02:42发布

我有一个数据帧(DF)与下列内容:

+---------+--------------------+
|  col1|        col2           |
+---------+--------------------+
|colvalue1|                NULL|   
|colvalue2|col2value...        |
+------------+-----------------+

我想基础上,COL2可过滤行如下

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

但具有NULL的行不过滤。 此栏显示nullable=true

任何人都可以让我知道我在做什么错误? 我使用的Spark 1.6。

Answer 1:

!==符号是错的应该是=!= ,你不能做$"col2".trim 既然你已经使用否定|| ,否定的一个总是正确的 。 在您的例子($"col2".isNotNULL)总是真所以每行过滤项。 所以个别否定的结合|| 应采取谨慎。

所以,正确的形式是

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

或者即使你使用内置的功能,更好地isnulltrim

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


文章来源: Filter NULL value in dataframe column of spark scala