Если у вас уже есть код sql, который работает, тогда вы можете просто использовать spark.sql(s)
, где s - ваш запрос в виде строки. Он также может содержать подзапросы. Просто убедитесь, что вы создали представление вашего фрейма данных, чтобы использовать его внутри spark.sql
запроса. Вот игрушечный пример:
df.createOrReplaceTempView("people")
sqlDF = spark.sql("SELECT * FROM people") // put your sql query here containing subqueries
Что касается вашего вопроса относительно оптимизации оптимизации. Теоретически оптимизатор катализатора, используемый в spark, должен позаботиться о любой оптимизации в вашем запросе, но, как всегда, если вы точно знаете, какая именно вам нужна оптимизация, в общем, лучше сделать это вручную, а не полагаться на катализатор.