【问题标题】:Apache Spark DataFrame: df.where() with Java:List attributeApache Spark DataFrame:带有 Java:List 属性的 df.where()
【发布时间】:2016-08-19 18:16:50
【问题描述】:

想象一下你有一个这样的 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:_*)

【问题讨论】:

    标签: scala apache-spark filter dataframe where


    【解决方案1】:

    如果我没听错,你想要 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| 
    +---+---+ 
    

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 2017-05-19
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多