Прийоми обробки даних

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

Mike Metzger

Data Engineering Consultant

Що ми намагаємось розібрати?

  • Некоректні дані
    • Порожні рядки
    • Рядки з коментарями
    • Заголовки
  • Вкладені структури
    • Кілька роздільників
  • Нерегулярні дані
    • Різна кількість стовпців у рядках
  • Фокус на даних CSV
width, height, image

# This is a comment
200    300    affenpinscher;0
600    450    Collie;307    Collie;101
600    449    Japanese_spaniel;23
Очищення даних у PySpark

Розмітка Stanford ImageNet

  • Визначає породи собак на зображеннях
  • Надає список усіх виявлених собак на зображенні
  • Інші метадані (базова тека, розмір зображення тощо)

Приклади рядків:

02111277    n02111277_3206    500    375    Newfoundland,110,73,416,298
02108422    n02108422_4375    500    375    bull_mastiff,101,90,214,356 \
 bull_mastiff,282,74,416,370
Очищення даних у PySpark

Видалення порожніх рядків, заголовків і коментарів

CSV-розбірник Spark:

  • Автоматично прибирає порожні рядки
  • Може прибирати коментарі за допомогою додаткового аргументу
df1 = spark.read.csv('datafile.csv.gz', comment='#')
  • Обробляє поля заголовка
    • Задаються через аргумент
    • Ігноруються, якщо задано схему
df1 = spark.read.csv('datafile.csv.gz', header='True')
Очищення даних у PySpark

Автоматичне створення стовпців

Spark:

  • Автоматично створює стовпці в DataFrame на основі аргументу sep
    df1 = spark.read.csv('datafile.csv.gz', sep=',')
    
  • Типово використовує ,
  • Може успішно розбирати, навіть якщо sep відсутній у рядку
    df1 = spark.read.csv('datafile.csv.gz', sep='*')
    
  • Зберігає дані в стовпці за замовчуванням _c0
  • Дає змогу коректно обробляти вкладені роздільники
Очищення даних у PySpark

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

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

Preparing Video For Download...