簡體   English   中英

Spark數據幀過濾空值和空格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM