Я сталкиваюсь с ситуацией, когда я получаю разные объяснения, объясняет планы для одной и той же операции на одном и том же кадре данных в моем коде спарк.
Я понимаю, что это потому, что спарк делает несколько итераций над кодом ипопробуйте оптимизировать код различными способами, и количество его повторений определяется параметром spark.sql.optimizer.maxIterations
.
. Моя проблема в том, что я хочу выполнить очень сложную операцию, а оптимизатор выполняет ее.иногда очень хорошая работа и иногда довольно плохая, и это приводит к почти 30% -ной разнице в производительности между запросами, работающими с одним и тем же набором данных.
Учитывая это, мой вопрос:
- Можно ли как-нибудь заморозить план объяснения для операции?
- Увеличение
spark.sql.optimizer.maxIterations
до 500, похоже, тоже не исправит.Этот параметр вообще используется? - Есть ли другой выход из этого?