Apache Spark DataFrame:带有Java的df.where():List属性

时间:2016-04-26 05:39:44

标签: scala apache-spark filter dataframe where

想象你有这样的df:

a b  
1 1  
1 2  
1 3  
2 1  
2 2  
2 3  

并且您希望实现一个通用的.where函数; 如何按列表过滤

val l1:List[Int] = List (1,2)  
df.where($"b" === l1:_*) // does not work

或是否有一个选项,你可以这样问:

df.where($"a" === l1:_* && $"b" === l1:_*)

1 个答案:

答案 0 :(得分:2)

如果我说得对,你需要 IN 语义:

df.where($"b" isin (l1: _*)).show()
+---+---+ 
|  a|  b| 
+---+---+ 
|  1|  1| 
|  1|  2| 
|  2|  1| 
|  2|  2| 
+---+---+ 

df.where(($"a" isin (l1: _*)) and ($"b" isin (l1: _*))).show()
+---+---+ 
|  a|  b| 
+---+---+ 
|  1|  1| 
|  1|  2| 
|  2|  1| 
|  2|  2| 
+---+---+