Dataframe 在Pyspark中使用和条件连接多个数据帧

Dataframe 在Pyspark中使用和条件连接多个数据帧,dataframe,apache-spark,pyspark,apache-spark-sql,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我想使用Pyspark dataframe实现beolw sql连接条件 select * FROM tableA A, tablec C, tableB B A.sno = C.sno AND A.sno = B.sno AND A.sdt = C.sdt AND A.sdt = B.sdt AND A.sid = C.sid AND A.sid = B.sid 我试过下面的代码(df_A0、df_C0、df_B0是3个不同的数据帧) 但是当我

我想使用Pyspark dataframe实现beolw sql连接条件

    select *
    FROM tableA A, tablec C, tableB  B
    A.sno = C.sno AND A.sno = B.sno AND 
    A.sdt = C.sdt AND A.sdt = B.sdt 
    AND A.sid = C.sid AND A.sid = B.sid 
我试过下面的代码(df_A0、df_C0、df_B0是3个不同的数据帧)

但是当我执行这个命令时,它显示了无效的语法错误


有人可以指导我如何在pyspark数据帧中编写它。

您可以像下面这样尝试

join_data = df_A0.alias("df_A0").join(df_C0.alias("df_C0"), (df_A0.sno == df_C0.sno) & (df_A0.sdt == df_C0.sdt) & (df_A0.sid == df_C0.sid),"inner")\
    .join(df_B0.alias("df_B0"), (df_A0.sno == df_B0.sno) & (df_A0.sdt == df_B0.sdt) & (df_A0.sid == df_B0.sid), "inner")

有关Spark SQL的更多信息,请单击。

python中没有三重相等。检查括号,它们不能正确打开/关闭<代码>无效语法错误表示您编写了糟糕的python代码。
join_data = df_A0.alias("df_A0").join(df_C0.alias("df_C0"), (df_A0.sno == df_C0.sno) & (df_A0.sdt == df_C0.sdt) & (df_A0.sid == df_C0.sid),"inner")\
    .join(df_B0.alias("df_B0"), (df_A0.sno == df_B0.sno) & (df_A0.sdt == df_B0.sdt) & (df_A0.sid == df_B0.sid), "inner")