如何根据列值是否在Spark DataFrame中的Set of Strings中筛选行



是否有一种更优雅的基于Set of String中的值的过滤方法?

def myFilter(actions: Set[String], myDF: DataFrame): DataFrame = {
  val containsAction = udf((action: String) => {
    actions.contains(action)
  })
  myDF.filter(containsAction('action))
}
在SQL中,你可以使用
select * from myTable where action in ('action1', 'action2', 'action3')

这个怎么样:

myDF.filter("action in (1,2)")

import org.apache.spark.sql.functions.lit       
myDF.where($"action".in(Seq(1,2).map(lit(_)):_*))

import org.apache.spark.sql.functions.lit       
myDF.where($"action".in(Seq(lit(1),lit(2)):_*))

将在1.5中添加额外的支持以使其更干净

相关内容

  • 没有找到相关文章

最新更新