Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何通过在spark中使用IN子句传递另一个列值来检索列值_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Scala 如何通过在spark中使用IN子句传递另一个列值来检索列值

Scala 如何通过在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值传

我有一个场景,通过使用同一数据帧中的另一列读取数据帧中的一列,通过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值传递给外部查询并在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这个理解正确吗?看起来不错,你可以测试很多。我将进行测试,并返回结果。