Alura > Cursos de Data Science > Cursos de Engenharia de Dados > Conteúdos de Engenharia de Dados > Primeiras aulas do curso PySpark e Databricks: pipelines de ETL e otimização de performance

PySpark e Databricks: pipelines de ETL e otimização de performance

Introdução ao Spark - Introdução

Apresentando a instrutora e realizando audiodescrição

Olá! Meu nome é Agnes Huesca, sou instrutora da Alura. Também sou engenheira de dados e trabalho em um banco há 5 anos, sendo responsável por pipelines de dados, criando-os, mantendo-os, provisionando infraestruturas em nuvem e participando do monitoramento de todas essas infraestruturas. Hoje, antes de mais nada, vou me autodescrever.

Audiodescrição: Sou uma mulher branca, de cabelo castanho longo, uso óculos e visto uma blusa preta longa. O fundo é o estúdio da Alura: há uma parede branca iluminada em azul e, ao lado, uma estante com alguns objetos e uma flor, uma planta pendente. Estou olhando diretamente para a câmera.

Apresentando o suporte da comunidade e a visão geral do curso

Antes de começarmos a detalhar o conteúdo deste curso, queremos lembrar que, durante todo este percurso, você não estará só. Você conta com o fórum da Alura, dentro da plataforma, e com nosso canal no Discord para conversar com outras pessoas que estejam passando pela mesma trajetória que você.

Neste curso, faremos um percurso completo por PySpark, utilizando-o desde a leitura inicial dos dados até a etapa final, em que salvamos os dados já tratados e depurados, com alto desempenho, em um arquivo Parquet.

Ao longo do curso, faremos uma introdução ao Spark, entendendo o que é, qual problema resolve e quando usar Spark ou SQL.

Explorando DataFrames e realizando as primeiras transformações

Veremos DataFrames (estruturas de dados tabulares) na prática. Também faremos a leitura de dados com PySpark e entenderemos o que é um schema (esquema). Realizaremos as primeiras transformações.

Falaremos sobre o tratamento e o enriquecimento dos dados. Faremos limpeza de valores ausentes, tratamento de tipos e aplicaremos join (junções) para unir as tabelas.

Organizando transformações e abordando desempenho

Entenderemos como otimizar e organizar nossas transformações em Spark. Veremos como criar um fluxo reutilizável e como organizar as etapas de transformação. Usaremos IA para ajudar a revisar tudo isso, ampliando nosso processo.

Abordaremos aspectos básicos de desempenho, utilizando cache (armazenamento em memória), particionamento e leitura eficiente de arquivos.

Consolidando com IA e encerrando a apresentação

Ao final, consolidaremos toda essa transformação com IA, usando-a para auxiliar na depuração, revisar o que fizemos e entender também quais são as limitações que a IA apresenta no nosso dia a dia.

Estou com muita expectativa para percorrer todo esse caminho com você e nos vemos nos próximos vídeos. [♪]

Introdução ao Spark - O problema que o Spark resolve

Apresentando o tema e contextualizando o cenário de dados

Olá. Antes de analisarmos como o PySpark funciona efetivamente dentro do Databricks, é importante entendermos o que é o Spark e qual problema ele resolve.

Considerando o cenário atual do mercado, temos cada vez mais dados chegando. Tudo o que fazemos — seja em um comércio eletrônico, em um sistema bancário ou em um dispositivo de IoT (Internet das Coisas) — gera dados o tempo todo. Portanto, além de termos um volume crescente de dados, eles chegam com velocidade cada vez maior. Paralelamente, o cenário se torna mais complexo. Como a complexidade aumenta, recebemos dados continuamente, com variedade e velocidade, e a dificuldade para processá-los também cresce.

Evidenciando limitações e propondo o processamento distribuído

Diante desse contexto, as ferramentas tradicionais deixam de ser efetivas. Em vários cenários elas funcionam, mas, quando falamos de Big Data (grandes volumes de dados), isto é, de um aumento real de volume, variedade e velocidade, estamos exatamente diante de um cenário em que manter o processamento em uma única máquina, por exemplo, provoca lentidão. Além disso, enfrentamos limites de memória, pois a máquina tem suas próprias limitações, como sabemos.

O processamento local deixa de ser uma solução viável quando falamos de Big Data (grandes volumes de dados). Por isso, surge a ideia de processamento distribuído, que consiste em processar os dados em várias máquinas. Recebemos dados de uma fonte e os processamos dividindo-os entre múltiplas máquinas. Dessa forma, eliminamos a limitação de uma única máquina e passamos a utilizar várias, aproveitando sua capacidade para processar o volume e a variedade de dados.

Apresentando o Spark e contextualizando o uso de PySpark no curso

Nesse contexto, Spark é uma ferramenta, um mecanismo de processamento distribuído de dados. A grande vantagem é ser distribuído e escalável, permitindo colocar máquinas para operar em paralelo. Visto dessa forma, Spark se encaixa em todo o nosso processo, geralmente em um pipeline (fluxo de processamento) de dados: receber os dados, transformá-los e até consumi-los. Assim, Spark faz parte de todo esse processo.

Neste curso, nós vamos aprofundar como usar PySpark, que é uma biblioteca de Python para utilizarmos o Spark. Teremos o Spark em execução em segundo plano; o Databricks, de modo geral, utiliza Spark em praticamente tudo. É fundamental entendermos o que é, de fato, o Spark.

Eu espero que tenham gostado do vídeo e nos vemos no próximo.

Introdução ao Spark - Como o Spark funciona no Databricks

Apresentando o objetivo do vídeo e a plataforma Databricks

Olá. No vídeo anterior, discutimos qual problema o Spark resolve. Neste vídeo, vamos abordar como o Spark funciona na Databricks.

É importante destacar que a Databricks é uma plataforma amplamente utilizada na engenharia de dados, justamente porque facilita o uso do Spark. Neste curso, vamos utilizar os notebooks (cadernos) dentro da Databricks; eles serão nossa ferramenta principal para realizarmos processamento e leitura de dados, tudo com PySpark.

Explorando a interface e criando notebooks

Vamos agora à plataforma da Databricks. Esta é a página principal da Databricks. Se você ainda não tem uma conta, recomendamos criar uma conta na edição gratuita para acompanhar o curso.

Aqui, na barra lateral, veremos algumas ferramentas da Databricks que podemos utilizar. Vamos usar, principalmente, o notebook (caderno). Você pode criar um novo notebook (caderno) clicando em New (Novo) e criando um. Nós já temos um criado aqui nesta aula, apenas para demonstrar.

Executando células e alinhando o uso do dataset

Vamos executar novamente todas as células. A execução foi concluída.

Neste primeiro momento, ainda não vamos utilizar o nosso dataset (conjunto de dados) do curso na sua totalidade. Este passo serve apenas para entendermos como o Spark está funcionando dentro da Databricks. A partir da Aula 2, começaremos a utilizar um dataset (conjunto de dados) real para o caso prático de todo o curso.

Criando um dataframe simples e exibindo resultados

Neste primeiro exemplo, embora simples, nós criamos um dataframe. Colocamos uma lista com os filmes A, B e C e, em seguida, chamamos o Spark para criar o dataframe. Depois, usamos display() para visualizar o dataframe que criamos. Também definimos quais seriam os nomes das colunas. No título, temos os filmes A, B e C, nas categorias Drama, Ação e Comédia, e suas durações. Vemos que tudo funcionou corretamente.

Para demonstrar isso no notebook, começamos definindo a lista de registros e criando o dataframe com os nomes das colunas. Em seguida, usamos display para visualizar o resultado:

data = [("Filme A", "Drama", 120),
        ("Filme B", "Ação", 90),
        ("Filme C", "Comédia", 110)
]

df = spark.createDataFrame(
    data,
    ["titulo", "categoria", "duracao"]
)

display(df)

Transformando dados com funções do PySpark

Logo abaixo, fizemos uma importação de PySpark e SQL e transformamos os dados que tínhamos acima. O que fizemos aqui foi adicionar uma coluna com a categoria em maiúsculas. Aplicamos upper: colocamos tudo em maiúsculas e também criamos o DF aqui. Assim, vemos na prática que funciona: criar um dataframe e realizar a transformação.

Para isso, importamos a função upper do módulo pyspark.sql.functions e criamos uma nova coluna com o texto em maiúsculas. Em seguida, exibimos o dataframe transformado:

from pyspark.sql.functions import upper

df_transformado = df.withColumn(
    "categoria_maiuscula",
    upper("categoria")
)

display(df_transformado)

Entendendo a infraestrutura do Spark e encerrando o vídeo

Aqui também conseguimos entender, de forma geral, como o Spark funciona dentro do Databricks. É importante compreender que, por trás do que fazemos no notebook (caderno), existe toda uma infraestrutura do Spark sendo gerenciada pelo próprio Databricks. Há um ambiente do Spark por trás e, no nosso código, usamos o Spark para realizar as transformações e até criar o nosso dataframe.

Foi um prazer ter você neste vídeo e eu espero você no próximo.

Sobre o curso PySpark e Databricks: pipelines de ETL e otimização de performance

O curso PySpark e Databricks: pipelines de ETL e otimização de performance possui 148 minutos de vídeos, em um total de 70 atividades. Gostou? Conheça nossos outros cursos de Engenharia de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Engenharia de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas