Два прошлых урока скрипты начинались сразу с spark.read: переменная spark уже ждала нас, как в интерактивной оболочке pyspark. В настоящем приложении её создают сами, и от этой строчки зависит, сколько ресурсов получит приложение и как оно будет себя вести. Разберём, что такое spark, как её создают и что Spark умеет, кроме таблиц.
Пульт управления
Представьте телевизор, приставку и колонку от разных производителей. Можно держать три пульта, а можно один универсальный: через него вы и переключаете каналы, и включаете фильм, и делаете громче.
spark это универсальный пульт Spark. Через него вы читаете файлы, выполняете SQL, запускаете потоковую обработку и настраиваете сессию. Объект называется SparkSession.
Раньше пультов было несколько: SparkContext для низкоуровневых наборов данных, SQLContext для SQL, HiveContext для таблиц Hive. Они до сих пор встречаются в старых статьях и ответах на форумах. С версии 2.0 всё это собрано в SparkSession, а SQLContext и HiveContext устарели. SparkContext остался внутри сессии: он доступен как spark.sparkContext, а в оболочке ещё и как sc.
Как создают сессию
В скрипте сессию собирают через строитель:
from pyspark.sql import SparkSession
spark = (SparkSession.builder
.appName("gonets-zones")
.config("spark.sql.shuffle.partitions", "8")
.getOrCreate())
appNameдаёт приложению имя. Его видно в Spark UI и в списке приложений кластера, по нему вы найдёте свою работу среди чужих.configзадаёт настройку. Настроек у Spark сотни, их имена начинаются сspark.. Здесь мы уменьшаем число партиций после группировки: по умолчанию их 200, что много для маленьких данных.getOrCreateвозвращает сессию. Если она уже есть в процессе, вернётся та же самая: сессия на приложение одна.
Поэтому в песочнице, где spark уже создана, getOrCreate вернёт её же, просто с вашими настройками. Настройки можно менять и на ходу, через spark.conf.set(ключ, значение), и читать через spark.conf.get(ключ).
урок из курса
Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.