忽略数据集中的空值

时间:2017-08-29 12:46:45

标签: scala apache-spark

+-------------------+------+---+
|          timestamp|status|msg|
+-------------------+------+---+
|2017-01-01 06:15:00| ASC_a|  1|
|2017-01-01 06:19:00| start|  2|
|2017-01-01 06:22:00| ASC_b|  2|
|2017-01-01 06:30:00|  null|  2|
|2017-01-01 10:45:00| ASC_a|  3|
|2017-01-01 10:50:00|  null|  3|
|2017-01-01 11:22:00| ASC_c|  4|
|2017-01-01 11:31:00|   end|  5|
+-------------------+------+---+

ds.where($"status" =!= "ASC_b").show

+-------------------+------+---+
|          timestamp|status|msg|
+-------------------+------+---+
|2017-01-01 06:15:00| ASC_a|  1|
|2017-01-01 06:19:00| start|  2|
|2017-01-01 10:45:00| ASC_a|  3|
|2017-01-01 11:22:00| ASC_c|  4|
|2017-01-01 11:31:00|   end|  5|
+-------------------+------+---+

我有所有这些空值,因为我做了两个数据集的左外连接。 我希望输出包含空值 有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:2)

您可以在过滤器中包含空检查

ds.where($"status" =!= "ASC_b" || $"status".isNull).show

答案 1 :(得分:2)

只是否定<=>运算符:

import org.apache.spark.sql.functions.not

ds.where(not($"status" <=> "ASC_b")).show