Bab*_*Bab 1 scala apache-spark
我有一个数据框(df),其中包含以下内容:
+---------+--------------------+
| col1| col2 |
+---------+--------------------+
|colvalue1| NULL|
|colvalue2|col2value... |
+------------+-----------------+
Run Code Online (Sandbox Code Playgroud)
我正在尝试根据 col2 过滤行,如下所示
df.filter(($"col2".isNotNULL) || ($"col2" !== "NULL") || ($"col2" !== "null") || ($"col2".trim !== "NULL"))
Run Code Online (Sandbox Code Playgroud)
但是具有 NULL 的行没有过滤。本栏目显示nullable=true
。
谁能让我知道我在做什么错误?我正在使用 Spark 1.6。
您的!==
符号应该是错误的=!=
,您不能这样做,$"col2".trim
并且由于您使用了与||
的否定,因此否定之一始终为 true。在你的例子($"col2".isNotNULL)
中总是如此,所以每一行都被过滤了。所以单独的否定结合 by||
应该小心。
所以正确的形式是
df.filter(!($"col2".isNull || ($"col2" === "NULL") || ($"col2" === "null")))
Run Code Online (Sandbox Code Playgroud)
甚至更好,如果您使用内置功能isnull
和trim
df.filter(!(isnull($"col2") || (trim($"col2") === "NULL") || (trim($"col2") === "null")))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9964 次 |
最近记录: |