#python #pyspark
Вопрос:
Возможно, это действительно смелый вопрос, но как можно было бы повторно использовать фрейм данных в соединении?
Например, допустим, у меня есть следующий сценарий:
df.join(df1, df.product_type == df1.id, "left") .join(df1, df.deal_type == df1.id, "left")
Пожалуйста, обратите внимание, что вышесказанное является частью более крупного скрипта, состоящего из множества функций.
Похоже, что возвращаются только данные из первого соединения. Таким образом, фрейм данных не сохраняется и не используется повторно.
Большое спасибо
Комментарии:
1. Очень трудно ответить на ваш вопрос, не увидев никаких ваших данных. Пожалуйста, предоставьте небольшой образец df1 и покажите, как вы ожидаете, что результат двух соединений будет выглядеть! Пожалуйста, отредактируйте свой вопрос, чтобы показать минимальный воспроизводимый набор, состоящий из образца ввода, ожидаемого вывода, фактического вывода и только соответствующего кода, необходимого для воспроизведения проблемы.
Ответ №1:
Вероятно, где — то в вашем коде есть опечатка. Я попробовал ваши команды на примерах фреймов данных и получил данные из обоих соединений в качестве выходных данных
data = [(1, 1, 1), (1, 1, 2), (1, 2, 2), (1, 2, 3), (1, 3, 5)] df = spark.createDataFrame(data, schema=["id", "product_type", "deal_type"]) df1 = spark.createDataFrame([(1, 1), (2, 2), (3, 3)], schema=["id", "just_col"]) df_out = (df .join(df1, df.product_type == df1.id, "left") .join(df1, df.deal_type == df1.id, "left"))
и df1 как
df_out-это