Розбиття на партиції та ліниве опрацювання

Очищення даних у 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 є лінивим!

  • Іноді порядок може порушуватися
  • Під час join ID можуть призначитися після з'єднання
  • Тестуйте свої перетворення
Очищення даних у PySpark

Давайте потренуємось!

Очищення даних у PySpark

Preparing Video For Download...