Particionamento e processamento lazy

Limpeza de dados com o PySpark

Mike Metzger

Data Engineering Consultant

Particionamento

  • DataFrames são divididos em partições
  • O tamanho da partição pode variar
  • Cada partição é tratada de forma independente
Limpeza de dados com o PySpark

Processamento lazy

  • Transformações são lazy
    • .withColumn(...)
    • .select(...)
  • Nada é realmente executado até ocorrer uma ação
    • .count()
    • .write(...)
  • Transformações podem ser reordenadas para melhor desempenho
  • Às vezes causa comportamentos inesperados
Limpeza de dados com o PySpark

Adicionando IDs

IDs normais:

  • Comuns em bancos de dados relacionais
  • Geralmente um inteiro crescente, sequencial e único
  • Pouco paralelizáveis
id last name first name state
0 Smith John TX
1 Wilson A. IL
2 Adams Wendy OR
Limpeza de dados com o PySpark

IDs monotonicamente crescentes

pyspark.sql.functions.monotonically_increasing_id()

  • Inteiro (64 bits), cresce em valor, único
  • Não necessariamente sequencial (há lacunas)
  • Totalmente paralelizável
id last name first name state
0 Smith John TX
134520871 Wilson A. IL
675824594 Adams Wendy OR
Limpeza de dados com o PySpark

Observações

Lembre-se: Spark é lazy!

  • Ocasionalmente fora de ordem
  • Em joins, o ID pode ser atribuído depois do join
  • Teste suas transformações
Limpeza de dados com o PySpark

Vamos praticar!

Limpeza de dados com o PySpark

Preparing Video For Download...