Spark过滤器DataFrames基于常见值

时间:2018-04-04 19:15:24

标签: scala apache-spark spark-dataframe

我有DF1和DF2。第一个有一个列“new_id”,第二个有一个列“db_id”

我需要FILTER OUT第一个DataFrame中的所有行,其中new_id的值不在db_id中。

val new_id = Seq(1, 2, 3, 4)
val db_id = Seq(1, 4, 5, 6, 10)

然后我需要new_id == 1和4的行保留在df1并删除带有news_id = 2和3的行,因为2和3不在db_id

这里有关于DataFrame的大量问题。我可能错过了这个。对不起,如果那是重复的。

p.s如果重要,我正在使用Scala。

1 个答案:

答案 0 :(得分:1)

你需要的是一个左半jon:

import spark.implicits._

val DF1 = Seq(1,3).toDF("new_id")
val DF2 = Seq(1,2).toDF("db_id")


DF1.as("df1").join(DF2.as("df2"),$"df1.new_id"===$"df2.db_id","leftsemi")
.show()

+------+
|new_id|
+------+
|     1|
+------+