【发布时间】:2016-10-25 16:17:20
【问题描述】:
用这个来敲我的脑袋,我怀疑答案很简单。给定两个数据框,我想过滤第一个数据框,其中一列中的值不存在于另一个数据框的列中。
我想在不使用成熟的 Spark SQL 的情况下执行此操作,因此只需使用 DataFrame.filter、Column.contains 或“isin”关键字,或其中一种连接方法。
val df1 = Seq(("Hampstead", "London"),
("Spui", "Amsterdam"),
("Chittagong", "Chennai")).toDF("location", "city")
val df2 = Seq(("London"),("Amsterdam"), ("New York")).toDF("cities")
val res = df1.filter(df2("cities").contains("city") === false)
// doesn't work, nor do the 20 other variants I have tried
有人有什么想法吗?
【问题讨论】:
-
试试下面的代码,它会起作用:- val df3 = Seq(("Hampstead", "London"), ("Spui", "Amsterdam"), ("Chittagong", "Chennai" )).toDF("location", "city") val df4 = Seq(("London"),("Amsterdam"), ("New York")).toDF("cities") df3.where(df3( "城市").isInCollection(df4.map(_.getString(0)).collect())).show()
标签: scala apache-spark apache-spark-sql spark-dataframe