Pyspark - Как объединить столбцы нескольких фреймов данных в столбцы одного фрейма данных - PullRequest
0 голосов
/ 06 мая 2019

У меня есть несколько фреймов данных (всего 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)

Но по мере роста join_df он становится все медленнее

DF1:

Col1
 2
 8
 18
 12

DF2:

Col2
 abc
 bcd
 def
 bbc

DF3:

Col3
 1.0
 2.2
 12.1
 1.9

ОжидаетсяРезультаты:

join_df:

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

1 Ответ

0 голосов
/ 16 мая 2019

Вы делаете это правильно.К сожалению, без первичного ключа, spark не подходит для этого типа операций.


Ответ от pault , извлечено из комментарий .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...