筛选Spark数据帧中数据具有空值的字符串数据



我正在寻找一种方法,对DataFrame中具有null数据的文件使用筛选器。下面是我的示例DataFrame,有两个字段:id和value。value字段中有一个空值。

val testData = Array((1,"actualstring1"),(2,null),(3,"actualstring2"),(4,"testString1"))
val testDataDF = sc.parallelize(testData).toDF("id", "value")

我使用下面的代码片段来过滤测试字符串,假设输出有三条记录。令我惊讶的是,我只有以下两项记录:

testDataDF.filter(!col("value").contains("test")).show

得出以下结果:

+---+-------------+
| id|        value|
+---+-------------+
|  1|actualstring1|
|  3|actualstring2|
+---+-------------+

在这里,我们看到具有id=2的记录在这个过滤过程中被忽略。我现在陷入了如何在输出中包括id=2的行以及我们得到的两行的问题。

感谢任何帮助

将当前条件替换为默认为FALSE:的条件

not(coalesce(col("value").contains("test"), lit(false))

其中

lit(false)

是布尔文字,

coalesce(_, _)

返回第一个NOT NULL元素(从左起计数(,如果不存在NULL,则返回该元素。

您可以在过滤器中测试col("value") != null

testDataDF.filter(col("value") != null && !col("value").contains("test")).show

相关内容

  • 没有找到相关文章

最新更新