2016-12-31 69 views
2

我有一个火花数据帧,我需要为特定列过滤空白和空格。火花数据帧同时过滤空白和空格

可以说数据框有两列。 col2既有空白也有空白。

col1 col2 
1  abc 
2  null 
3  null 
4 
5  def 

我想应用一个过滤器将col2作为空值或空白的记录。 任何人都可以帮助这个。

版本: Spark1.6.2 斯卡拉2.10

+0

我能单独过滤掉空值和空白像下面。 'val df2 = df.filter(“col2!=''”).filter(col(“col2”)。isNotNull === true)' – Ramesh

+0

但我想包括两个条件在相同的过滤器表达式 – Ramesh

+0

@srinivas根据我上面的评论 – Ramesh

回答

5

标准的逻辑运算符是在星火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| 
+----+----+ 

注:根据您的星火版本则需要!===!=(中后者是更当前的选择)。

如果你有n条件得到满足,我可能会用一个列表来减少布尔列在一起:

val conds = List(myDF("a").contains("x"), myDF("b") =!= "y", myDF("c") > 2) 

val filtered = myDF.filter(conds.reduce(_&&_))