需要在pyspark中联接多个表:

时间:2018-09-14 17:28:12

标签: python-3.x pyspark pyspark-sql

查询使用:

df= (df1.alias('a')
     .join(df2, a.id == df2.id, how='inner')
     .select('a.*').alias('b')
     .join(df3, b.id == df3.id, how='inner'))

错误:未定义名称'b'。

1 个答案:

答案 0 :(得分:1)

.alias('b')不会创建名为b的Python标识符。它设置返回的数据帧的内部名称。您的a.id可能也不是您所期望的事物,但它是先前定义的事物。

我不记得一种在表达式中按名称访问新创建的DF的好方法。我会使用一个中间标识符:

df_joined = df1.join(df1.id == df2.id, how='inner')
result_df = dj_joined.join(df_joined.id == df3.id, how='inner')