[英]Spark dataframe filter both nulls and spaces
我有一個spark數據幀,我需要為特定列過濾空值和空格。
可以說dataframe有兩列。 col2既有空值也有空格。
col1 col2
1 abc
2 null
3 null
4
5 def
我想應用過濾掉col2為空或空白的記錄。 任何人都可以幫忙解決這個問題。
版本:Spark1.6.2 Scala 2.10
標准邏輯運算符在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(_&&_))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.