Интересные функции в Spark 3.1
Вкратце поговорим про PySpark UX, стейджинговую диспетчеризацию и функцию повышения производительности в Spark 3.1.
Начиная с версии 3.1, в Spark появились 2 значительных улучшения в UX, которые особенно пригодятся разработчикам на PySpark:
- была полностью переработана документация PySpark, в результате чего она стала в большей степени соответствовать Python, не говоря уже о повышении удобства использования;
- появилась поддержка подсказок типов: теперь в IDE можно применять бесплатное автозавершение кода и функцию обнаружения статических ошибок:
Также стоит добавить, что Spark History Server, отображающий интерфейс Spark после завершения работы приложения, теперь способен показывать статистику по выполненным вами запросам на Structured Streaming.
Стейджинговая диспетчеризация
SPARK-27495 (стейджинговая диспетчеризация) может применяться лишь для YARN- и Kubernetes-развертываний, при этом должно быть включено динамическое выделение. Данная функция позволит управлять в коде числом и типом ресурсов, запрашиваемых для исполнителя, причем с точностью на уровне стадий. Например, теперь существует возможность настроить приложение под использование конкретных исполнителей с процессорными ресурсами в ходе 1-й стадии (допустим, при подготовке данных либо выполнении ETL). Ну а в ходе 2-й стадии можно настроить приложение на использование видеокарт (для тех же Machine learning-моделей).
Повышение производительности
В Spark 3.1 была повышена производительность shuffle хэш-соединения, плюс были добавлены новые правила в оптимизатор Catalyst, а также правила прерывания подвыражений. Опять же, пользователи PySpark отмечают такой плюс, как применение в Spark колоночного формата in-memory хранения Apache Arrow 2.0.0 (прежняя версия -- 1.0.2). В результате увеличивается скорость работы приложений, что особенно заметно, если надо выполнить преобразование данных между фреймами данных Pandas и Spark. При этом вышеописанные улучшения производительности не требуют изменения кода либо конфигурации.
По материалам https://towardsdatascience.com/apache-spark-3-1-release-spark-on-kubernetes-is-now-generally-available-65cccbf1436b.