#apache-spark #pyspark #apache-spark-sql
#apache-spark #pyspark #apache-spark-sql
Вопрос:
У меня есть dataframe df и имя столбца setp для создания списка, который я написал
setp_list=df.select ('setp').distinct().collect()
setp_array=[row.setp for row in setp_list]
setp_array= str(setp_array)[1:-1]
Я хотел использовать его в инструкции spark.sql
df1=spark.sql(f"select * from table where setp in ({setp_array})").
Я не уверен, как отобразить список, чтобы увидеть, как он был создан, но в основном я хочу, чтобы он был включен в инструкцию spark sql. Он выдает ошибку в инструкции spark sql как недопустимый синтаксис
Ответ №1:
Избегайте сбора элементов из одной таблицы и использования их в запросе другой таблицы. Используйте a JOIN
для написания реляционных запросов.
df.createOrReplaceTempView('df')
df1 = spark.sql("select * from table semi join df using(setp)")
Комментарии:
1. отредактировано, чтобы использовать более консервативный тон … извините за излишнюю эмоциональность при написании сообщения! @mazaneicha
2. @mck О, круто, я не понимал, что могу создать временную таблицу и использовать ее в spark sql. Получил ошибку при использовании полусоединения, поэтому вместо этого использовал подзапрос