Conjuntos de dados distribuídos resilientes no PySpark

Introdução ao PySpark

Benjamin Schmidt

Data Engineer

O que é paralelização no PySpark?

  • Paralelização automática de dados e cálculos em vários nós de um cluster
  • Processamento distribuído de grandes datasets em vários nós
  • Nós de trabalho processam dados em paralelo, combinando no final da tarefa
  • Processamento mais rápido em grande escala (pense em gigabytes ou terabytes)

Paralelização

Introdução ao PySpark

Entendendo RDDs

RDDs ou Conjuntos de Dados Distribuídos Resilientes:

  • Coleções de dados distribuídas em um cluster com recuperação automática de falhas de nós
  • Bom para dados em grande escala
  • Imutáveis e podem ser transformados com operações como map() ou filter(), com ações como collect() ou paralelize() para obter resultados ou criar RDDs
Introdução ao PySpark

Criando um RDD

# Inicializar uma sessão Spark
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("RDDExample").getOrCreate()

# Criar um DataFrame a partir de um csv census_df = spark.read.csv("/census.csv")
# Converter DataFrame para RDD census_rdd = census_df.rdd
# Mostrar o conteúdo do RDD usando collect() census_rdd.collect()
Introdução ao PySpark

Mostrando Collect

# Coletar todo o DataFrame em uma lista local de objetos Row do Python
data_collected = df.collect()

# Imprimir os dados coletados
for row in data_collected:
    print(row)
```    
Introdução ao PySpark

RDDs vs DataFrames

DataFrames

  • Alto nível: Otimizados para facilidade de uso
  • Operações SQL: Trabalham com consultas SQL e realizam operações complexas com menos código
  • Informação de Esquema: Contêm colunas e tipos como uma tabela SQL

RDDs

  • Baixo nível: Mais flexíveis, mas exigem mais linhas de código para operações complexas
  • Segurança de Tipo: Preservam tipos de dados, mas sem os benefícios de otimização dos DataFrames
  • Sem Esquema: Mais difíceis de trabalhar com dados estruturados como SQL ou relacionais
  • Grande Escalabilidade
  • Muito verbosos comparados aos DataFrames e ruins em análises
Introdução ao PySpark

Funções e métodos úteis

  • map(): aplica funções (incluindo lambdas) em um dataset como: rdd.map(map_function)
  • collect(): coleta dados do cluster como: rdd.collect()
Introdução ao PySpark

Vamos praticar!

Introdução ao PySpark

Preparing Video For Download...