Logo Passei Direto
Buscar

Exercícios Big Data

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Princípios de Desenvolvimento de Spark com Python
Desafio 1
Você está trabalhando como analista de dados em uma empresa que decidiu adotar novas tecnologias para melhorar o processamento de grandes volumes de dados. Durante uma reunião, seu supervisor questiona sobre a
escolha entre Hadoop e Spark para a implementação de um novo projeto de Big Data. Considerando a evolução das tecnologias de Big Data e as demandas crescentes no processamento de dados, qual das alternativas
abaixo faz a afirmativa correta sobre o Apache Spark e o Hadoop?
A O Spark foi o primeiro framework a ser desenvolvido pela Apache Foundation, superando as limitações do
Hadoop com o uso exclusivo de Java.
B O Hadoop, apesar de suas limitações, ainda é mais eficiente que o Spark em tarefas de processamento
intensivo por não utilizar cache de memória.
C O Spark é um framework de código aberto que supera o Hadoop em eficiência devido à sua capacidade de
utilizar cache de memória e algoritmos de processamento otimizados.
D O Hadoop e o Spark são igualmente eficientes, pois ambos utilizam as mesmas técnicas de processamento
distribuído e cache de memória.
E O Spark não fornece suporte para linguagens como Python e Scala, o que o torna menos flexível que o Hadoop
para aplicações de Big Data.
Parabéns! A alternativa C está correta.
Desafio 2
Como engenheiro de dados, você está implementando uma aplicação de processamento distribuído utilizando o Apache Spark em um ambiente de cluster. Durante uma reunião de planejamento, o time técnico discute
como o Spark gerencia a execução das tarefas distribuídas. Um dos aspectos importantes a ser considerado é o papel do Driver Program e como ele interage com o gerenciador de cluster e os executores. Com base na
arquitetura do Spark, qual das alternativas abaixo descreve corretamente a função do Driver Program no contexto de execução de uma aplicação Spark?
A O Driver Program é responsável por executar as tarefas diretamente nos executores, sem a necessidade de
comunicação com o gerenciador de cluster.
B O Driver Program se conecta ao gerenciador de cluster, distribui as tarefas aos executores e retorna os
resultados para o usuário.
C O Driver Program processa diretamente os dados e envia o resultado final para o gerenciador de cluster, que o
distribui aos executores.
D O Driver Program apenas cria a aplicação Spark, sem se envolver no agendamento ou execução das tarefas nos
executores.
E O Driver Program é o responsável por monitorar a performance dos executores e ajustar automaticamente o
número de executores conforme a necessidade.
Responda
A) Incorreta. Embora o Spark seja de fato desenvolvido pela Apache Foundation, ele não foi o primeiro
framework; essa posição pertence ao Hadoop. Além disso, o Spark não é exclusivo de Java; ele oferece suporte a
várias linguagens, incluindo Python, Scala, e R.
 
B) Incorreta. O Hadoop não utiliza cache de memória da mesma forma que o Spark, o que o torna menos eficiente
em tarefas de processamento intensivo. O Spark utiliza técnicas de cache na memória e processamento otimizado,
o que aumenta sua eficiência em comparação ao Hadoop.
 
C) Correta. O Apache Spark é projetado para superar o Hadoop em termos de eficiência, principalmente devido à
sua capacidade de realizar cache de memória, o que reduz a latência e melhora o tempo de execução das tarefas.
Além disso, o Spark possui algoritmos de processamento otimizados que são mais eficazes para o processamento
de grandes volumes de dados.
 
D) Incorreta. Embora ambos os frameworks realizem processamento distribuído, o Spark tem uma vantagem clara
devido ao uso de cache de memória, o que o torna mais rápido em muitas aplicações em comparação ao Hadoop.
 
E) Incorreta. O Spark oferece suporte a várias linguagens de programação, incluindo Python e Scala, o que o
torna bastante flexível e adequado para diversas aplicações de Big Data. Esta flexibilidade é uma das razões pelas
quais o Spark é preferido em muitas situações.
Para saber mais sobre esse conteúdo, acesse: 
 
Módulo 1:
 
INTRODUÇÃO E CONTEXTUALIZAÇÃO
 
“Com a consolidação e evolução das tecnologias para aplicações de Big Data, houve a necessidade de ferramentas
computacionais robustas e eficientes de processamento distribuído, capazes de tolerar falhas. Nesse contexto, o
primeiro framework que foi um caso de sucesso foi o Hadoop, inicialmente desenvolvido pela Apache
Foundation. Com o tempo, o Hadoop apresentou limitações para atender às crescentes demandas, e o próximo
framework a se tornar um caso de sucesso foi o Spark. O Apache Spark é um framework de código aberto de
computação distribuída para uso geral, usado para aplicações de Big Data. O Spark é muito mais eficiente do que
o Hadoop para gerenciar e processar tarefas devido à utilização de cache de memória e algoritmo de
processamento otimizado. Ele fornece APIs de desenvolvimento para as linguagens de programação Python, Java,
Scala e R. Além disso, o Spark fornece recursos para o desenvolvimento de aplicações de aprendizado de
máquina, SQL, análise gráfica e bibliotecas de streaming.”
Responda
Parabéns! A alternativa B está correta.
Desafio 3
Você está colaborando em um projeto de ciência de dados que envolve o uso de PySpark para processar grandes volumes de dados. Durante uma reunião, seu time discute diferentes maneiras de integrar PySpark com a
biblioteca Pandas para melhorar a análise dos dados. Sua tarefa é avaliar as diferentes abordagens sugeridas e identificar a forma correta de utilização. Ao utilizar PySpark em conjunto com Pandas para manipulação e
análise de dados em um ambiente de Big Data, qual das alternativas abaixo descreve corretamente uma aplicação válida dessa integração?
A Utilizar PySpark para transformar os dados em um DataFrame Pandas diretamente dentro do cluster, evitando
a necessidade de processamento distribuído.
B Usar PySpark para distribuir o processamento dos dados e então converter partes menores do DataFrame
Spark em Pandas DataFrames para análise local mais detalhada.
C Processar os dados inteiramente com PySpark e Pandas simultaneamente, o que elimina a necessidade de
conversões entre DataFrames.
D Implementar o Pandas diretamente em PySpark para otimizar o processamento distribuído em grandes clusters
de dados.
E Utilizar PySpark para criar visualizações gráficas com Pandas diretamente no ambiente de cluster,
aproveitando o processamento distribuído.
Parabéns! A alternativa B está correta.
A) Incorreta. O Driver Program não executa diretamente as tarefas nos executores. Sua função é mais central,
envolvendo o agendamento e a comunicação com o gerenciador de cluster para distribuir as tarefas.
 
B) Correta. O Driver Program tem a função de conectar-se ao gerenciador de cluster, distribuir as tarefas para os
executores e, posteriormente, retornar o status ou os resultados da execução para o usuário. Este papel centraliza o
controle da execução da aplicação Spark, permitindo uma comunicação eficiente entre os componentes do Spark.
 
C) Incorreta. O Driver Program não processa diretamente os dados nem envia resultados diretamente para o
gerenciador de cluster. Ele coordena o fluxo de trabalho, mas o processamento dos dados é realizado pelos
executores após a distribuição das tarefas.
 
D) Incorreta. O Driver Program faz mais do que apenas criar a aplicação; ele também é responsável por agendar e
distribuir as tarefas nos executores por meio do gerenciador de cluster.
 
E) Incorreta. Embora o Driver Program monitore a execução das tarefas, ele não é responsável por ajustar
automaticamente o número de executores. Essa função pode ser gerenciada pelo gerenciador de cluster ou
configurada de acordo com as necessidades específicas da aplicação.
Para saber mais sobre esse conteúdo, acesse: 
 
Módulo 1:
 
ARQUITETURA DO SPARK
 
“Agora, vamos ver com mais detalhes os elementos estruturais da arquitetura do Spark e aprender mais sobre o
fluxo de execução de uma aplicação. Driver Program é o responsável por converter uma aplicação de usuárioem
unidades de execução menores chamadas de tarefas. Em seguida, essas tarefas são programadas, ou agendadas,
para serem aplicadas com um gerenciador de cluster (Cluster Manager) nos executores. Cabe também ao Driver
Program executar a aplicação Spark e retornar o status ou o resultado para o usuário. Para executar em um cluster,
o SparkContext se conecta ao gerenciador de cluster e, em seguida, efetua as seguintes tarefas: […]”
Responda
A) Incorreta. Transformar os dados em um DataFrame Pandas diretamente dentro do cluster sem processamento
distribuído não faz uso das capacidades do PySpark. Pandas é mais adequado para análise de dados em memória
local, não em processamento distribuído em clusters.
 
B) Correta. PySpark é eficaz para distribuir e processar grandes volumes de dados em um cluster. Após esse
processamento, converter partes menores dos dados em DataFrames Pandas permite análises locais mais
detalhadas, aproveitando as funções avançadas de manipulação e análise estatística do Pandas.
 
C) Incorreta. PySpark e Pandas são utilizados em momentos distintos do fluxo de trabalho. A ideia de usá-los
simultaneamente para evitar conversões não é prática nem correta, pois Pandas é mais eficaz para análise em
memória local.
 
D) Incorreta. Pandas não pode ser implementado diretamente em PySpark para otimizar o processamento
distribuído, pois essas bibliotecas servem a propósitos diferentes. PySpark é utilizado para processar grandes
volumes de dados em um cluster, enquanto Pandas é usado para análise em memória local.
 
E) Incorreta. PySpark não é normalmente utilizado para criar visualizações gráficas com Pandas. Pandas pode ser
usado para análise e manipulação de dados, mas as visualizações são geralmente feitas com bibliotecas como
Matplotlib ou Seaborn, fora do ambiente de cluster distribuído.
Para saber mais sobre esse conteúdo, acesse: 
 
Módulo 2:
 
UTILIZAÇÃO DO PYSPARK COM O PACOTE PANDAS
 
"Um dos pacotes mais importantes do Python para manipulações de dados é o Pandas, que possui funções
voltadas para manipulações básicas de dados até limpeza e análise exploratória dos dados. Em especial, para
aplicações de Big Data, o Pandas facilita o estudo estatístico para identificarmos padrões e descobrirmos
conhecimento por meio de funcionalidades, a fim de obtermos valores máximos e mínimos de um conjunto de
Desafio 4
Você é um engenheiro de dados trabalhando em um projeto de Big Data que utiliza Apache Spark para processar grandes volumes de dados de clientes. Durante uma reunião técnica, a equipe discute como o processamento
distribuído pode ser aplicado para melhorar o desempenho das tarefas de análise de dados, e você precisa explicar essa abordagem ao seu time. No contexto do Apache Spark, qual das alternativas abaixo melhor descreve a
importância do processamento distribuído?
A Permite que o Spark execute todas as operações em um único nó, garantindo maior controle sobre os dados.
B Facilita a divisão de tarefas de processamento entre vários nós de um cluster, aumentando a eficiência e
escalabilidade.
C Substitui a necessidade de uso de memória distribuída, processando todos os dados localmente.
D Garante que todas as tarefas sejam executadas sequencialmente para evitar conflitos de dados.
E Elimina a necessidade de comunicação entre os nós do cluster, centralizando o processamento em um único
executor.
Parabéns! A alternativa B está correta.
Desafio 5
Você está trabalhando como desenvolvedor em um projeto que utiliza o Apache Spark para processar grandes volumes de dados. Durante o desenvolvimento, você precisa explicar aos membros do time como as
transformações em Spark RDD funcionam, destacando a característica de "lazy evaluation" e como ela impacta o fluxo de processamento dos dados. No contexto das transformações em Spark RDD, qual das alternativas
abaixo descreve corretamente o conceito de "lazy evaluation" e sua implicação no processamento de dados?
A As transformações em RDD são executadas imediatamente após serem aplicadas, garantindo que os dados
estejam sempre atualizados.
B A "lazy evaluation" significa que as transformações em RDD não são executadas imediatamente, mas apenas
quando uma ação é aplicada, otimizando o processamento.
C Ao aplicar uma transformação, o RDD original é modificado, e a "lazy evaluation" permite que o Spark
execute a transformação em tempo real.
D A "lazy evaluation" faz com que as transformações em RDD sejam armazenadas em disco, aguardando a
execução de uma ação.
E As transformações em Spark RDD são consideradas "preguiçosas" porque não criam novos RDDs e apenas
modificam os existentes.
dados, correlações entre colunas, média, desvio-padrão e outros recursos úteis no estudo da relevância estatística
dos dados.
O Pandas facilita trabalharmos com dados relacionais de várias estruturas de dados e operações que nos ajudam a
manipular dados numéricos e séries temporais.
Ele foi construído sobre a biblioteca Numpy – talvez a biblioteca mais importante do Python para aplicações de
ciência de dados. As estruturas e funcionalidades do Pandas foram construídas para otimizar o desempenho e a
produtividade para os desenvolvedores."
Responda
A) Incorreta. O Spark é projetado para aproveitar a capacidade de múltiplos nós em um cluster, não para
concentrar o processamento em um único nó. A distribuição das tarefas entre vários nós permite o processamento
mais rápido e eficiente.
 
B) Correta. O processamento distribuído no Apache Spark divide grandes tarefas de processamento entre
diferentes nós de um cluster, permitindo que as tarefas sejam executadas simultaneamente. Isso aumenta
significativamente a eficiência e escalabilidade do processamento de dados, aproveitando ao máximo os recursos
disponíveis no cluster.
 
C) Incorreta. O Spark utiliza memória distribuída para armazenar dados e processá-los em paralelo, o que é
fundamental para o seu desempenho em aplicações de Big Data.
 
D) Incorreta. Uma das vantagens do processamento distribuído é a capacidade de executar tarefas em paralelo, o
que contrasta com o processamento sequencial que pode ser mais lento e menos eficiente.
 
E) Incorreta. A comunicação entre os nós do cluster é essencial para o funcionamento do Spark, pois permite a
coordenação e execução das tarefas distribuídas. Centralizar o processamento em um único executor iria
contrariar o princípio de distribuição de tarefas do Spark.
Para saber mais sobre esse conteúdo, acesse: 
 
Módulo 3:
 
INTRODUÇÃO E CONTEXTUALIZAÇÃO
 
“Atualmente, usamos diversas aplicações distribuídas em nosso dia a dia. Alguns exemplos são serviços na
internet, computação móvel e Internet das Coisas. Com a popularização da internet, as aplicações distribuídas
ganharam protagonismo, pois começaram a surgir diversas demandas que não precisavam, nem podiam passar por
uma abordagem sequencial. Desse modo, houve a necessidade de aplicar técnicas de processamento distribuído. A
ideia básica do processamento distribuído é aplicar uma técnica muito conhecida para resolver problemas de
computação: dividir para conquistar.”
Parabéns! A alternativa B está correta.
Responda
A) Incorreta. As transformações em RDD não são executadas imediatamente após serem aplicadas. A execução só
ocorre quando uma ação é desencadeada, o que diferencia o processamento do Spark de outras abordagens.
 
B) Correta. A "lazy evaluation" é um conceito chave no Spark, onde as transformações aplicadas em RDDs são
registradas e aguardam a aplicação de uma ação para serem executadas. Isso permite que o Spark otimize o fluxo
de execução, criando um DAG (Grafo Dirigido Acíclico) que representa as operações a serem realizadas.
 
C) Incorreta. O RDD original não é modificado, pois os RDDs são imutáveis. Além disso, a "lazy evaluation" não
significa execução em tempo real, mas sim adiamento da execução até que uma ação seja aplicada.
 
D) Incorreta. As transformações não são armazenadas em disco; elas são registradas no DAG do Spark e só são
executadas na memória quando uma ação é aplicada.E) Incorreta. As transformações em RDD criam novos RDDs a partir dos existentes, e não simplesmente
modificam os originais. A "preguiça" refere-se ao fato de que essas transformações não são imediatamente
executadas.
Para saber mais sobre esse conteúdo, acesse: 
 
Módulo 4:
 
TRANSFORMAÇÕES
 
"As transformações do Spark RDD são funções que recebem um RDD como entrada e produzem um ou mais
RDDs como saída. Eles não modificam o RDD de entrada, pois os RDDs são imutáveis. A ideia é transformar um
conjunto de dados de entrada no conjunto que queremos obter. Por definição, elas são operações preguiçosas (lazy
evaluations), ou seja, os novos RDDs são criados apenas depois da execução de uma operação classificada como
ação. Portanto, a transformação cria um conjunto de dados a partir de um existente.
Ainda sobre o processo preguiçoso das transformações, quando aplicamos uma transformação em qualquer RDD,
ela não será executada de imediato. O Spark vai criar um DAG (Grafo Dirigido Acíclico), com as seguintes
informações: operação aplicada, a RDD origem e a função usada para a transformação. Apenas quando
aplicarmos uma ação, serão realizados os cálculos sobre o RDD. Existem dois tipos de transformações:
transformação estreita e transformação ampla. A seguir, vamos analisar cada uma dessas transformações."

Mais conteúdos dessa disciplina