我有一个火花数据帧,我需要为特定列过滤空值和空格。
让我们说数据框有两列。 col2既有空值也有空格。
col1 col2
1 abc
2 null
3 null
4
5 def
我想在将col2作为空值或空格的记录中应用过滤器。 任何人都可以帮忙解决这个问题。
版本: Spark1.6.2 Scala 2.10
答案 0 :(得分:6)
标准逻辑运算符在Spark Column
上定义:
scala> val myDF = Seq((1, "abc"),(2,null),(3,null),(4, ""),(5,"def")).toDF("col1", "col2")
myDF: org.apache.spark.sql.DataFrame = [col1: int, col2: string]
scala> myDF.show
+----+----+
|col1|col2|
+----+----+
| 1| abc|
| 2|null|
| 3|null|
| 4| |
| 5| def|
+----+----+
scala> myDF.filter(($"col2" =!= "") && ($"col2".isNotNull)).show
+----+----+
|col1|col2|
+----+----+
| 1| abc|
| 5| def|
+----+----+
注意:根据您的Spark版本,您需要!==
或=!=
(后者是更新的选项)。
如果您要满足n
条件,我可能会使用列表来减少布尔列:
val conds = List(myDF("a").contains("x"), myDF("b") =!= "y", myDF("c") > 2)
val filtered = myDF.filter(conds.reduce(_&&_))