Методы обработки данных

Очистка данных с помощью 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...