【问题标题】:Filter NULL value in dataframe column of spark scala在 spark scala 的数据框列中过滤 NULL 值
【发布时间】:2018-11-01 20:40:19
【问题描述】:

我有一个包含以下内容的数据框(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。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    您的!== 表示法错误,应该是=!=,并且您不能使用$"col2".trim因为您已对|| 使用了否定,所以其中一个否定始终为真。在您的示例中,($"col2".isNotNULL) 始终为真,因此每一行都被过滤。所以||结合的个别否定要小心。

    所以正确的形式是

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

    如果你使用内置函数 isnulltrim 甚至更好

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

    【讨论】:

    • 这是 (trim($"col2") === "null") 必要的吗?火花催化剂应该不区分大小写吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多