Resumo de Fundamentos de Apache Spark e Big Data
Fundamentos de Apache Spark e Big Data: Guia Completo para Estudantes
Introdução
Apache Spark é um motor distribuído de processamento de dados projetado para executar cargas de trabalho em larga escala com alta velocidade e tolerância a falhas. Neste material, você aprenderá conceitos-chave de Spark SQL, como criar e manipular RDD e DataFrames, como instalar e executar Spark no Google Colab, e exemplos práticos de leitura e escrita de arquivos como CSV e Parquet.
Definição: Um RDD (Resilient Distributed Dataset) é uma coleção distribuída de elementos que pode ser processada em paralelo e reconstruída a partir de suas dependências.
1. Arquitetura e principais componentes do Spark
Principais Componentes
- Spark Core: Motor base que gerencia tarefas, memória, agendamento e tolerância a falhas.
- Spark SQL: Pacote para trabalhar com dados estruturados e executar consultas SQL juntamente com operações programáticas.
- Spark Streaming: Processa dados em tempo real (streams) com tolerância a falhas similar ao Spark Core.
- MLlib: Biblioteca de aprendizado de máquina com algoritmos de classificação, regressão e clusterização.
- GraphX: Biblioteca para processamento de grafos e algoritmos como PageRank.
| Componente | Uso principal | Exemplo de tarefa |
|---|---|---|
| Spark Core | Gerenciamento de execução e memória | Coordenação de tarefas em cluster |
| Spark SQL | Dados estruturados e consultas | Consultas SQL sobre tabelas Parquet |
| Spark Streaming | Processamento de streams | Ingestão de eventos em tempo real |
| MLlib | Modelagem preditiva | Classificação e clusterização |
| GraphX | Processamento de grafos | Cálculo de PageRank |
Você sabia que o Spark permite combinar diferentes tipos de processamento (por exemplo, consultas interativas e transmissão) dentro do mesmo motor sem ferramentas adicionais?
Usuários Típicos
- Cientistas de dados: realizam análises ad hoc e precisam de respostas rápidas através de APIs acessíveis (Python, Scala, R, Java, SQL).
- Engenheiros de dados: desenvolvem pipelines produtivos, supervisionam e ajustam aplicações distribuídas.
2. RDD: conceitos e criação
Principais Características
- Dependências: descrição de como um RDD é construído para que possa ser reconstruído, se necessário.
- Partições: divisão física para paralelizar o trabalho entre executores.
- Função de Cálculo: produz os iteradores com os dados que o RDD contém.
Definição: Partição é a unidade de paralelismo no Spark; um RDD é dividido em uma ou mais partições que são processadas em paralelo.
Formas de Criar RDD
- RDD vazio:
rdd_vacio = sc.emptyRDD()rdd_vacio3 = sc.parallelize([], 3)cria um RDD vazio com 3 partições
- A partir de uma lista:
rdd = sc.parallelize([1,2,3,4,5])e depoisrdd.collect()para ver o conteúdo
- A partir de um arquivo de texto:
rdd_texto = sc.textFile('./rdd_source.txt')(cada linha = um registro)rdd_text_completo = sc.wholeTextFiles('./rdd_source.txt')(arquivo completo como um único registro)
- A partir de outro RDD (transformações):
rdd_suma = rdd.map(lambda x: x + 1)
- A partir de um DataFrame:
df = Spark.createDataFrame([(1,'Jose'),(2,'Juan')], ['id','Nombre'])rdd_from_df = df.rdd
Curiosidade: Spark armazena metadados de como construir RDDs usando seu grafo de dependências, o que lhe permite recomputar partições em caso de falhas sem replicar todos os dados.
3. Spark Session e ambiente no Google Colab
O que é Google Colab?
Google Colab é um serviço gratuito baseado em Jupyter Notebook que permite executar código Python na nuvem, ideal para experimentar com Spark sem instalar localmente.
Passos resumidos para usar Spark no Colab
- Instalar Java 8:
!apt-get install openjdk-8-jdk-headless -qq
- Baixar e descompactar Spark (exemplo com Spark 3.2.3):
!wget -q https://archive.apache.org/dist/Spark/Spark-3.2.3/Spark-3.2.3-bin-hadoop3.2.tgz!tar xf Spark-3.2.3-bin-hadoop3.2.tgz
- Definir variá
Já tem uma conta? Entrar
Apache Spark: Spark SQL Básico
Klíčové pojmy: Spark inclui módulos: Core, SQL, Streaming, MLlib, GraphX, RDD é uma coleção distribuída com partições e dependências, Criar RDDs: emptyRDD, parallelize, textFile, wholeTextFiles, a partir de um DataFrame, SparkSession é a entrada unificada para o Spark, Instalação no Colab: Java 8, Spark, findSpark, pySpark e configurar variáveis de ambiente, Ler CSV: Spark.read.csv(sep, header=True) e salvar/ler Parquet com write.parquet/read.parquet, DataFrame: select, selectExpr, filter/where, distinct/dropDuplicates, Transformações são preguiçosas; ações materializam resultados, Parquet é colunar e mais eficiente que CSV para análise, Usar col('colname') e funções de pyspark.sql.functions para criar expressões