在pysparksql中使用相关子查询
表1列在pysparksql中使用相关子查询,pyspark,pyspark-sql,correlated-subquery,apache-spark-2.3,Pyspark,Pyspark Sql,Correlated Subquery,Apache Spark 2.3,表1列[F、S、E] F1 S1 R F1 S2 R2 F1 S3 R1 F2 S1 R2 F2 S4 R4 F1 S4 R F1 S1 R F1 S3 R F2 S4 R4 表2列[F,S] F1 S1 F1 S3 F2 S1 F2 S4 仅当Tab2中存在F->S关系时,才从TAB1中获取行 结果列[F、S、E] F1 S1 R F1 S2 R2 F1 S3 R1 F2 S1 R2 F2 S4 R4 F1 S4 R F1 S1 R F1 S3 R F2 S4 R4 我现在有了这个查
[F、S、E]
F1 S1 R
F1 S2 R2
F1 S3 R1
F2 S1 R2
F2 S4 R4
F1 S4 R
F1 S1 R
F1 S3 R
F2 S4 R4
表2列[F,S]
F1 S1
F1 S3
F2 S1
F2 S4
仅当Tab2中存在F->S关系时,才从TAB1中获取行
结果列[F、S、E]
F1 S1 R
F1 S2 R2
F1 S3 R1
F2 S1 R2
F2 S4 R4
F1 S4 R
F1 S1 R
F1 S3 R
F2 S4 R4
我现在有了这个查询,但是不能用pyspark得到结果。我可以在MySql数据库上运行
我试图在spark 2.4.3中使用corelated子查询,但它返回0行
Tab1.createOrReplaceTempView("Tab1")
Tab2.createOrReplaceTempView("Tab2")
joined_df = spark.sql(
"""SELECT F, S, E FROM Tab1
WHERE EXISTS (SELECT * FROM Tab2 WHERE Tab1.F=Tab2.F AND Tab1.S=Tab2.S)"""
)
joined_df.show(10)
可能与F1 S3 R1重复。输出中的第二行。为什么是F1 S3 R?