Prévia do material em texto
Resumo de "Tópicos de Big Data em Python"
para Prova
Não consigo gerar um arquivo PDF diretamente nesta conversa, mas preparei um resumo
completo e organizado abaixo. Você pode copiar o conteúdo e colar em um editor (Word,
Google Docs) e salvar como PDF. Se quiser, também posso formatar em Markdown ou HTML
para facilitar a conversão.
1. Introdução ao Big Data
Os 5 Vs do Big Data:
Volume: grandes quantidades de dados (TB, PB)
Velocidade: dados gerados e processados rapidamente
Variedade: estruturados, semiestruturados e não estruturados
Veracidade: qualidade e confiabilidade dos dados
Valor: transformar dados em insights úteis
Por que Python?
Ecossistema rico (pandas, numpy, pyspark, dask)
Sintaxe simples e legível
Grande comunidade e bibliotecas para ML e análise
Integração com Hadoop, Spark, bancos NoSQL
2. Bibliotecas Essenciais
Biblioteca Função
NumPy Computação numérica, arrays multidimensionais
Pandas Manipulação de dados tabulares (DataFrame)
Dask Processamento paralelo/distribuído de grandes datasets
PySpark Interface Python para Apache Spark
Biblioteca Função
Polars DataFrame rápido em Rust (alternativa ao pandas)
Vaex DataFrames para bilhões de linhas (lazy evaluation)
Matplotlib/Seaborn Visualização
Scikit-learn Machine Learning
3. Pandas — Fundamentos
Series: array unidimensional rotulado
DataFrame: tabela bidimensional com índices
Leitura: pd.read_csv() , pd.read_parquet() , pd.read_json()
Seleção: df.loc[] (rótulo), df.iloc[] (posição)
Limpeza: dropna() , fillna() , drop_duplicates() , astype()
Agregação: groupby() , pivot_table() , agg()
Merge/Join: pd.merge() , df.join() , pd.concat()
Performance: usar category para strings repetidas, vectorização em vez de loops
Limitação: pandas carrega tudo em memória (RAM) → não escala para Big Data.
4. Processamento Distribuído com PySpark
Conceitos:
RDD (Resilient Distributed Dataset): coleção imutável distribuída
DataFrame Spark: abstração de alto nível (otimizada pelo Catalyst)
Lazy evaluation: transformações só executam quando há uma action
Transformações: map , filter , select , groupBy , join
Actions: count , collect , show , write
Exemplo básico:
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("exemplo").getOrCreate()
df = spark.read.csv("dados.csv", header=True, inferSchema=True)
df.groupBy("categoria").count().show()
Vantagens: processamento em cluster, tolerância a falhas, escalabilidade horizontal.
5. Dask
Paralelismo em Python puro (usa múltiplos cores ou cluster)
API similar ao pandas ( dask.dataframe ) e numpy ( dask.array )
Lazy evaluation com grafos de tarefas
Ideal para datasets maiores que a RAM, mas que cabem em disco
dask.delayed para paralelizar funções Python arbitrárias
6. Formatos de Dados para Big Data
Formato Característica
CSV Simples, porém lento e sem esquema
Parquet Colunar, comprimido, ideal para Big Data
Avro Linha, bom para streaming
ORC Colunar, otimizado para Hive
JSON Semiestruturado, comum em APIs
Parquet é o padrão em pipelines modernos (leitura colunar + compressão).
7. Bancos de Dados NoSQL
Chave-valor: Redis, DynamoDB
Documento: MongoDB (JSON/BSON)
Colunar: Cassandra, HBase
Grafo: Neo4j
Integração Python: pymongo , redis-py , cassandra-driver .
8. Streaming de Dados
Apache Kafka: plataforma de streaming distribuído (tópicos, partições,
produtores/consumidores)
Spark Structured Streaming: processamento de streams com API DataFrame
Bibliotecas Python: kafka-python , confluent-kafka , faust
Conceitos: janelas (tumbling, sliding), watermark, exactly-once semantics.
9. Pipeline de Dados (ETL/ELT)
ETL: Extract → Transform → Load (transformação antes de carregar)
ELT: Extract → Load → Transform (transformação no destino, comum em data lakes)
Orquestração: Apache Airflow (DAGs em Python), Prefect, Luigi
Boas práticas: idempotência, logging, validação de dados, versionamento
10. Machine Learning em Big Data
Scikit-learn: bom para dados que cabem na RAM
Spark MLlib: ML distribuído ( pyspark.ml )
Dask-ML: paraleliza scikit-learn
Conceitos: feature engineering, train/test split, cross-validation, pipelines
Algoritmos comuns: regressão, classificação, clustering (KMeans), árvores
11. Boas Práticas e Performance
Preferir operações vetorizadas a loops
Usar Parquet em vez de CSV
Evitar collect() no Spark (traz tudo para o driver)
Particionar dados adequadamente
Monitorar memória e usar chunking
Cachear DataFrames reutilizados ( df.cache() no Spark)
Usar tipos de dados eficientes (int32 vs int64, category)
12. Pontos-Chave para a Prova
1. Diferença entre pandas (memória única) e Spark/Dask (distribuído)
2. Lazy evaluation em Spark e Dask
3. Quando usar Parquet vs CSV
4. Estrutura de um job Spark (transformações vs actions)
5. Conceitos de streaming (Kafka, janelas)
6. Diferença ETL vs ELT
7. Os 5 Vs do Big Data
8. Vantagens do Python no ecossistema Big Data
Dica: revise exemplos de código de groupBy , filter e leitura de arquivos em PySpark, pois
costumam cair em provas práticas.