Scala 基于公共值的Spark filter数据帧

Scala 基于公共值的Spark filter数据帧,scala,apache-spark,spark-dataframe,Scala,Apache Spark,Spark Dataframe,我有DF1和DF2。第一个有一列“new_id”,第二个有一列“db_id” 我需要过滤掉第一个数据帧中的所有行,其中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中 这里有很多关于数据帧的问题。我可能错过了这个。对不起,如果是重复的 p、 如果有必要的话,我正在使用Scala。

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

我需要过滤掉第一个数据帧中的所有行,其中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中

这里有很多关于数据帧的问题。我可能错过了这个。对不起,如果是重复的


p、 如果有必要的话,我正在使用Scala。

您需要的是一个左半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|
+------+

事实上,我需要相反的东西。我需要在df1中保留1,并对3进行过滤out@Martee是的,如果
new_id
db_id
是明确的,否则可以使用别名方法