Scala 如何通过在spark中使用IN子句传递另一个列值来检索列值
我有一个场景,通过使用同一数据帧中的另一列读取数据帧中的一列,通过where条件和该值作为IN条件传递,从另一个数据帧中选择相同的值,以及如何在spark数据帧中实现 在SQL中,它将类似于: 从表A中选择distinctA.date,其中A.输入从表B中选择B.输入,其中cond='D'; 我试过如下: val Bkey:DataFrame=b_df.filtercolcond==D.selectcolkeyScala 如何通过在spark中使用IN子句传递另一个列值来检索列值,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有一个场景,通过使用同一数据帧中的另一列读取数据帧中的一列,通过where条件和该值作为IN条件传递,从另一个数据帧中选择相同的值,以及如何在spark数据帧中实现 在SQL中,它将类似于: 从表A中选择distinctA.date,其中A.输入从表B中选择B.输入,其中cond='D'; 我试过如下: val Bkey:DataFrame=b_df.filtercolcond==D.selectcolkey 我在A_df数据框中有表A数据,在B_df数据框中有表B数据。如何将变量Bkey值传
我在A_df数据框中有表A数据,在B_df数据框中有表B数据。如何将变量Bkey值传递给外部查询并在Spark中实现?您可以执行半联接:
val result = a_df.join(b_df.filter(col("cond")==="D"), Seq("key"), "left_semi").select("date").distinct()
非常感谢您的回复和建议,若列键在表A和表B中有不同的名称该怎么办?例如,表A的名称为key,但表B的tkey在两个表中的值相同。我们可以用Seqkey,tkey吗?然后用a_-df.key===b_-df.tkey代替Seqkeyval result=a_-df.joinb_-df.filtercolcond==D,a_-df.key==b_-df.tkey,left_-semi.selectdate.distinct这个理解正确吗?看起来不错,你可以测试很多。我将进行测试,并返回结果。