Для оптимизации работы с датафреймом Spark заранее позаботьтесь о задании схемы данных. Это уменьшит время загрузки, сэкономит память и позволит избежать неожиданностей при автоматическом определении типов.
Для примера будем работать с датасетом о пассажирах Титаника. При загрузке данных из источников, не хранящих информацию о типах, по умолчанию колонкам будет присвоен строчный тип:
Если хотите установить автоматическое определение типов, воспользуйтесь параметром inferSchema:
Типы можно посмотреть и через метод dtypes:
Для задания схемы вручную воспользуйтесь классами типов из модуля pyspark.sql.types:
Чаще всего схема определяется как экземпляр объекта StructType, состоящего из списка StructField. Последние требуется инициализировать кортежами с именем поля и его типом для каждой колонки. Также в третьем аргументе конструктора StructField можно задать опцию возможности присутствия пропусков в столбце:
При создании схемы ориентируйтесь на перечень типов c официальной страницы.