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”)))
|
如果你使用内置函数 isnull 和 trim
甚至更好
1
|
df.filter(!(isnull($“col2”) || (trim($“col2”) ===“NULL”) || (trim($“col2”) ===“null”)))
|
- 这是 (trim($”col2″) === “null”) 必要的吗?火花催化剂应该不区分大小写吗?
来源:https://www.codenong.com/50478512/