#apache-spark #pyspark #apache-spark-sql
#apache-spark #pyspark #apache-spark-sql
Вопрос:
*** Редактировать
df_joint = df_raw.join(df_items,on='x',how='left')
Названное исключение возникло в Apache Spark 2.4.5
df_raw содержит данные из 2 столбцов «x», «y», а df_items — пустой фрейм данных схемы с некоторыми другими столбцами
соединение по левому краю выполняется для значения null, которое должно получить все данные из 1-го фрейма данных с нулевыми столбцами из 2-го фрейма данных.
Он полностью работает нормально, когда «X» равно float, однако, когда я приводил «X» к строке его ошибки неявного декартова произведения
я получил эту ошибку с помощью spark 2.4.5.
Почему это происходит и как решить эту проблему, не включив перекрестное соединение spark spark.conf.set("spark.sql.crossJoin.enabled", "true")
Комментарии:
1. Почему бы не использовать явное
df_raw.crossJoin(df_items)
?2. перекрестное соединение @mazaneicha приведет к дублированию столбца
x
3. Столбец может быть удален перед присоединением, тем более что я подозреваю, что он существует только для того, чтобы было над чем выполнять левое соединение.
Ответ №1:
Может быть ошибка в Spark, но если вы просто хотите добавить столбцы, вы можете сделать следующее:
import pyspark.sql.functions as F
df_joint = df_raw.select(
'*',
*[F.lit(None).alias(c) for c in df_items.columns if c not in df_raw.columns]
)