Pyspark-如何将多个数据框的列连接为一个数据框的列

时间:2019-05-06 17:20:15

标签: pyspark

我有一列有多个数据帧(总共24个)。我需要将所有这些组合到一个数据帧中。我创建了索引并使用索引进行了连接,但是将所有索引都连接起来的速度相当慢(全部具有相同的行数)。

请注意,我正在使用Pyspark 2.1

w = Window().orderBy(lit('A'))
df1 = df1.withColumn('Index',row_number().over(w))
df2 = df2.withColumn('Index',row_number().over(w))
joined_df = df1.join(df2,df1.Index=df2.Index,'Inner').drop(df2.Index)
df3 = df3.withColumn('Index',row_number().over(w))
joined_df = joined_df.join(df3,joined_df.Index=df3.Index).drop(df3.Index)

但是随着joined_df的增长,它会越来越慢

DF1:

Col1
 2
 8
 18
 12

DF2:

Col2
 abc
 bcd
 def
 bbc

DF3:

Col3
 1.0
 2.2
 12.1
 1.9

预期结果:

joined_df:

Col1  Col2  Col3
 2     abc   1.0
 8     bcd   2.2
 18    def   12.1
 12    bbc   1.9

1 个答案:

答案 0 :(得分:0)

  

您正在按照正确的方式进行操作。不幸的是,如果没有主键,spark不适合此类操作。


pault撤消comment的答复。