首页 > 解决方案 > Pyspark 使用 sql join 连接多个数据帧

问题描述

来自 SAS 我想在 PySpark 的一个 SQL 连接中加入多个数据帧。在 SAS 中,这是可能的,但是,我觉得在 Pyspark 中不是。我的脚本如下所示:

A.createOrReplaceTempView("A")
B.createOrReplaceTempView("B")
C.createOrReplaceTempView("C")

D = spark.sql("select a.*, b.VAR_B, C.VAR_C
              from A a    left join B b on a.VAR == b.VAR
                          left join C c on  a.VAR == c.VAR")

在 PySpark 中这可能吗?谢谢!

标签: joinpyspark

解决方案


PySpark中,连接的工作方式与 SQL 类似。

首先定义一个df,例如

df_a = spark.sql('select * from a)
df_b = spark.sql('select * from b)
df_c = spark.sql('select * from c)

然后你可以按照以下方式加入 -

df_joined_a = df_a.join(df_b, a['VAR'] == b['VAR'], 'left')\
.select(df_a['*'], df_b['VAR'].alias('b_var'))
df_joined_c = df_joined_a.join(df_c, df_joined_a['VAR'] == c['VAR'], 'left')\
.select(df_joined_a['*'], df.c['VAR'])

此处提供更多示例 - https://sparkbyexamples.com/pyspark/pyspark-join-explained-with-examples/


推荐阅读