Técnicas de tratamento de dados

Limpeza de dados com o PySpark

Mike Metzger

Data Engineering Consultant

O que estamos tentando fazer parse?

  • Dados incorretos
    • Linhas vazias
    • Linhas comentadas
    • Cabeçalhos
  • Estruturas aninhadas
    • Vários delimitadores
  • Dados irregulares
    • Números de colunas diferentes por linha
  • Foco em dados CSV
width, height, image

# This is a comment
200    300    affenpinscher;0
600    450    Collie;307    Collie;101
600    449    Japanese_spaniel;23
Limpeza de dados com o PySpark

Anotações do Stanford ImageNet

  • Identifica raças de cães em imagens
  • Fornece a lista de todos os cães identificados na imagem
  • Outros metadados (pasta base, tamanho da imagem etc.)

Linhas de exemplo:

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
Limpeza de dados com o PySpark

Removendo linhas em branco, cabeçalhos e comentários

O parser de CSV do Spark:

  • Remove linhas em branco automaticamente
  • Pode remover comentários com um argumento opcional
df1 = spark.read.csv('datafile.csv.gz', comment='#')
  • Lida com campos de cabeçalho
    • Definidos via argumento
    • Ignorados se um schema estiver definido
df1 = spark.read.csv('datafile.csv.gz', header='True')
Limpeza de dados com o PySpark

Criação automática de colunas

O Spark vai:

  • Criar colunas automaticamente em um DataFrame com base no argumento sep
    df1 = spark.read.csv('datafile.csv.gz', sep=',')
    
  • Usar , por padrão
  • Ainda conseguir fazer parse se sep não estiver na string
    df1 = spark.read.csv('datafile.csv.gz', sep='*')
    
  • Armazenar os dados em uma coluna padrão _c0
  • Permitir tratar corretamente separadores aninhados
Limpeza de dados com o PySpark

Vamos praticar!

Limpeza de dados com o PySpark

Preparing Video For Download...