Prévia do material em texto
TEMA 1 – SPARK Q: O que é o Spark e quais são seus principais componentes? E: · Sistema de computação em cluster da Apache. · Utiliza DAG (grafos acíclicos direcionados) para otimizar o fluxo de trabalho. · Principais bibliotecas: Spark SQL, Spark Streaming, MLLib e GraphX. · APIs de alto nível para vários usos: análise, machine learning, grafos, etc. C: Spark é uma plataforma de processamento distribuído de propósito geral, que utiliza grafos direcionados para executar tarefas de forma eficiente em clusters. Seus principais módulos são Spark SQL (dados estruturados), Spark Streaming (fluxo de dados), MLLib (machine learning) e GraphX (grafos). Q: Como funciona a arquitetura de cluster do Spark? E: · Aplicações são conjuntos de processos coordenados por um driver program (SparkContext). · Executores executam tarefas em threads. · Suporte a gerenciadores: YARN, Mesos, Kubernetes ou standalone. · Cada app é isolada (dados não compartilhados entre apps a não ser por armazenamento externo). C: O Spark roda aplicações distribuídas usando um SparkContext que coordena os executores. Cada executor roda tarefas em paralelo e isoladamente, e o Spark pode ser executado com diferentes gerenciadores de cluster como YARN ou Kubernetes. Q: O que são RDDs e como são criados? E: · RDD = Resilient Distributed Dataset (conjunto de dados distribuído e tolerante a falhas). · Criados via parallelize ou textFile. · Podem ser armazenados em memória ou disco. · SparkContext é necessário para criar RDDs. · Suporta variáveis de broadcast e acumuladores. C: RDDs são estruturas centrais do Spark que representam conjuntos de dados divididos entre os nós. Eles são resilientes a falhas, podem ser criados a partir de dados locais ou externos, e operam com suporte a variáveis compartilhadas como broadcast e acumuladores. Q: Quais são os dois tipos de operações em RDDs? E: · Transformações: criam novos RDDs (ex: map, filter, reduceByKey). · Ações: retornam valores ao driver (ex: count, collect, reduce). · Transformações são preguiçosas → só executam quando uma ação é chamada. · Persistência: cache ou disco. · Operações podem causar "shuffle" (movimentação de dados cara e lenta). C: RDDs operam com transformações e ações. Transformações são preguiçosas e só executam com ações. A persistência otimiza execuções repetidas e operações complexas podem gerar shuffle, exigindo redistribuição de dados. TEMA 2 – SPARK SQL Q: Para que serve o Spark SQL e como ele funciona? E: · Processa dados estruturados. · Interface com linguagem SQL ou DataFrame API. · Otimizações com base na estrutura dos dados. · Integra com Hive (com metastore e funções Hive). · Formatos suportados: Parquet, JSON, ORC, CSV, LibSVM, JDBC. C: Spark SQL é o módulo que permite consultas em dados estruturados via SQL ou API de DataFrame. Ele otimiza execuções com base na estrutura dos dados, integra com Hive e suporta múltiplos formatos de entrada e saída. Q: Qual a diferença entre DataFrame e Dataset no Spark? E: · Dataset = coleção de objetos distribuídos com tipagem forte (Java/Scala). · DataFrame = Dataset com colunas nomeadas, estruturado como tabela. · DataFrame tem suporte em Java, Scala, Python, R. · Dataset não disponível em Python/R. C: DataFrames são tabelas estruturadas com colunas nomeadas, disponíveis em várias linguagens. Datasets adicionam tipagem forte e são usados principalmente com Java e Scala. Q: O que é o structured streaming? E: · Usa o motor do Spark SQL para processar fluxos com baixa latência. · Trabalha com microbatches. · Permite atualizar resultados conforme novos dados chegam. · Desde Spark 2.3, suporta modo contínuo (latência ~1ms). · Usa DataFrame e Dataset para dados de fluxo. C: Structured Streaming é a forma moderna de processar dados em fluxo no Spark, utilizando o motor SQL e abstrações como DataFrame/Dataset para permitir consultas contínuas e tolerantes a falhas com latência baixa. TEMA 3 – SPARK STREAMING Q: Como funciona o Spark Streaming e o que são DStreams? E: · Recebe dados de fontes como Kafka, Flume, Sockets, HDFS. · Divide em microbatches → gera RDDs para cada intervalo. · Processamento quase em tempo real. · DStream = sequência de RDDs. · Operações: map, reduce, join, window. C: Spark Streaming permite processar dados em fluxo dividindo-os em pequenos lotes (microbatches). Os dados são representados como DStreams, compostos por RDDs, que podem ser transformados com operações comuns de Spark. Q: O que são transformações de janela em Spark Streaming? E: · Agrupam RDDs em janelas maiores para análise acumulada. · Três intervalos: batch (frequência de captura), slide (frequência de aplicação) e window (tamanho da janela). · Exemplo: contar palavras a cada 10s com base nos últimos 30s. C: Transformações de janela permitem aplicar funções acumuladas sobre dados de múltiplos batches em Spark Streaming, útil para análises mais robustas sobre períodos maiores de tempo. TEMA 4 – MLLIB (Machine Learning) Q: Quais são os tipos de aprendizado de máquina na MLLib? E: · Supervisionado: dados rotulados (classificação e regressão). · Não supervisionado: sem rótulos (ex: clustering). · Reforço: aprendizado com base em recompensas e punições. C: MLLib suporta três tipos de aprendizado de máquina: supervisionado (ex: prever rótulos), não supervisionado (descobrir padrões) e por reforço (tomar decisões com base em resultados anteriores). Q: Como funciona o fluxo de aprendizado de máquina no Spark? E: · Etapas: obtenção de dados → preparação → escolha do modelo → treino → avaliação → ajuste → predição. · Fonte de dados variada. · Avaliação gera ajustes para melhorar o modelo. C: O fluxo de machine learning no Spark segue um ciclo: obter e preparar dados, escolher um modelo, treiná-lo, avaliar seu desempenho e ajustar até atingir boa performance para fazer previsões. Q: Quais os componentes da MLLib? E: · Algoritmos (classificação, regressão, clustering). · Caracterização (extração e transformação de dados). · Pipelines (automatizam fluxo de aprendizado). · Persistência (salvar modelos). · Utilidades (estatística, álgebra). C: A MLLib oferece um conjunto completo de ferramentas para machine learning, incluindo algoritmos, manipulação de dados, pipelines, persistência de modelos e utilidades matemáticas. Q: Como funcionam os pipelines de machine learning no Spark? E: · Estágios encadeados: transformadores e estimadores. · Transformadores: aplicam transform() (ex: normalização, tokenização). · Estimadores: aplicam fit() (ex: LogisticRegression). · PipelineModel = sequência final usada para inferência. C: Pipelines permitem encadear transformações e modelos de forma organizada. Cada estágio aplica uma transformação (transform) ou treina um modelo (fit), e o resultado final é um PipelineModel que pode ser usado com dados de teste. TEMA 5 – GRAPHX Q: O que é o GraphX e para que serve? E: · API para computação de grafos em larga escala. · Usa grafos de propriedades (Property Graphs). · Cada vértice e aresta tem atributos. · Modelado com RDDs → tolerante a falhas e distribuído. · Operações com grafos: PageRank, Triangle Counting, Connected Components. C: GraphX é a API do Spark para processamento de grafos distribuídos. Permite representar redes complexas com vértices e arestas com atributos, e executar algoritmos como PageRank e detecção de comunidades em escala.