Нужно объединить несколько таблиц в pyspark: - PullRequest
0 голосов
/ 14 сентября 2018

запрос с использованием:

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 голосов
/ 14 сентября 2018

.alias('b') не создает идентификатор Python с именем b. Устанавливает внутреннее имя возвращаемого фрейма данных. Ваш 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')
...