PySpark 相当于一个简单的 SQL 连接



这可能是一个问题。

但我自己并没有走得太远。

我正在尝试在Databricks中使用PySpark来执行SQL等效的查找:

select 
    a.*
    , b.MASTER_ID as PLAYER_ID 
from vGame a
join PLAYER_XREF b 
on a.PLAYER_NAME = b.PLAYER

请注意,on两侧的两个属性的名称并不相同。

你能给我看一下同样的 pyspark 版本吗?在我看来,这里的许多切线帖子与此相比过于复杂。

我发现了这个,这真的很接近,但返回的数据帧是ta和tb的所有列。

inner_join = ta.join(tb, ta.name == tb.name)

我可以单独列出所有ta列,并将tb列别名为:

from pyspark.sql.functions import *
inner_join = ta.join(tb, ta.PLAYER_NAME == tb.PLAYER).select('<taCol1>', '<taCol2>', ... col('MASTER_ID').alias('PLAYER_ID'))
display(inner_join)

逻辑:

1.) 我们首先将 ta 数据帧中的player_name重命名为播放器,以便我们可以加入

2.) 一旦列名称相同,我们就可以使用方括号 [] 的连接

3.) 我们还从数据框 ta 中动态选择列

法典:

ta = ta.withColumn("player_name","player")
inner_join = ta.join(tb,["player"]).select(col(x) for x in ta.columns])

相关内容

  • 没有找到相关文章

最新更新