Партиционирование и ленивые вычисления

Очистка данных с помощью PySpark

Mike Metzger

Data Engineering Consultant

Партиционирование

  • DataFrame разбиваются на партиции
  • Размер партиции может варьироваться
  • Каждая партиция обрабатывается независимо
Очистка данных с помощью PySpark

Ленивые вычисления

  • Трансформации выполняются лениво
    • .withColumn(...)
    • .select(...)
  • Ничего не происходит до вызова действия
    • .count()
    • .write(...)
  • Трансформации можно переупорядочить для повышения производительности
  • Иногда это приводит к неожиданному поведению
Очистка данных с помощью PySpark

Добавление ID

Обычные поля ID:

  • Распространены в реляционных базах данных
  • Как правило, целое число — возрастающее, последовательное и уникальное
  • Плохо поддаются параллельной обработке
id last name first name state
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Очистка данных с помощью PySpark

Монотонно возрастающие ID

pyspark.sql.functions.monotonically_increasing_id()

  • Целое число (64-разрядное), возрастающее, уникальное
  • Не обязательно последовательное (возможны пропуски)
  • Полностью параллельное
id last name first name state
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Очистка данных с помощью PySpark

Примечания

Помните: Spark работает лениво!

  • Порядок вывода может нарушаться
  • При объединении ID может быть присвоен уже после него
  • Проверяйте результаты своих трансформаций
Очистка данных с помощью PySpark

Давайте потренируемся!

Очистка данных с помощью PySpark

Preparing Video For Download...