join - 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 中这可能吗?谢谢!
解决方案
在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/
推荐阅读
- file-io - Elixir:写入文件并创建父目录(如果它们不存在) - 在一行中
- java - 如何将对象的 ArrayList 发送到其他活动?
- command-line-interface - 我可以使用 Browserify CLI 将选项传递给 babel 预设吗?
- html - 将单选按钮与 HTML 中的标签对齐
- c# - Unity:PlayMode UnityTest 和 EditMode UnityTest 有什么区别?
- machine-learning - 异常值的准确预测
- prestashop - 如何在 Prestashop 1.6 中手动延迟加载图像?
- php - 将其转换为准备好的语句
- c++ - 有没有办法让 Visual Studio 假定 #define 的值?
- ruby-on-rails - 使用 Ruby 和 MongoID 排序不排序