Introdução aos DataFrames do Spark
Deslize para mostrar o menu
Um Spark DataFrame é uma coleção distribuída de dados organizada em colunas nomeadas. Conceitualmente, é equivalente a uma tabela em um banco de dados relacional ou a uma planilha com cabeçalhos de coluna, mas foi projetado para ser processado em um cluster de computadores.
Ao avançar para a Seção 4, o foco muda da interface para os próprios dados. Para trabalhar de forma eficiente no Databricks, é fundamental compreender o DataFrame. Essa é a estrutura básica utilizada pelo Apache Spark para armazenar e manipular dados. Seja utilizando Python, SQL ou Scala, quase todas as operações envolvem a interação com um DataFrame.
Existe também uma interface Py Spark que será utilizada posteriormente.
Apache Spark é um mecanismo poderoso para processar grandes volumes de dados em paralelo, distribuídos por vários computadores ao mesmo tempo. Ele é escrito em Scala e é o responsável pelo processamento intenso nos bastidores do Databricks.
PySpark é simplesmente a interface em Python para o Spark. Ela permite escrever códigos em Python que, na verdade, instruem o Spark sobre o que deve ser feito por trás das cortinas.
Portanto, ao escrever um df.filter() ou df.groupBy() em um notebook do Databricks, você está utilizando PySpark — mas é o Spark que realmente processa milhões de linhas no seu cluster.
A Analogia da Planilha
A maneira mais fácil de visualizar um DataFrame é pensar em uma única aba de uma planilha do Excel. Ele possui linhas de dados e colunas com nomes específicos como "Date", "Product_ID" ou "Price". No entanto, diferente de uma planilha do Excel que está no seu computador, um DataFrame do Spark é distribuído. Isso significa que, se seu conjunto de dados for grande demais para um único computador, o Spark divide a "planilha" em partes menores e as distribui entre os diferentes nós do seu cluster.
Por que usar DataFrames em vez de arquivos brutos?
Quando você lê um arquivo CSV ou JSON bruto em um DataFrame, o Databricks realiza duas ações importantes:
- Inferência de Esquema: analisa os dados para entender que "Price" é um número e "Name" é um texto;
- Otimização: uma vez que os dados estão em um DataFrame, o Spark pode usar seu "otimizador" para encontrar a maneira mais rápida de filtrar ou agregar esses dados. Ele funciona como um GPS, encontrando a rota mais eficiente para o seu resultado, evitando desperdício de poder computacional.
Características Principais
Existem três características principais dos DataFrames que você deve lembrar:
- Imutável: uma vez criado, um DataFrame não pode ser alterado. Se você "limpar" os dados ou "remover uma coluna", o Spark na verdade cria um novo DataFrame com essas alterações aplicadas. Isso garante a integridade dos dados;
- Avaliação Preguiçosa: o Spark não executa nenhuma operação até que você solicite um resultado (como uma contagem ou exibição). Ele primeiro constrói um "plano" e só o executa quando realmente necessário;
- API Unificada: é possível criar um DataFrame com Python e depois consultá-lo usando SQL. A estrutura subjacente permanece a mesma, permitindo a "mistura de linguagens" praticada na Seção 3.
DataFrames vs. Tabelas
No Databricks, os termos "Tabela" e "DataFrame" são frequentemente usados como sinônimos, mas existe uma pequena diferença. Uma Tabela é um objeto permanente salvo no seu Catálogo. Um DataFrame é um objeto temporário que reside na memória do cluster enquanto seu notebook está em execução.
Normalmente, o fluxo de trabalho será:
- Carregar dados do Catálogo em um DataFrame;
- Manipular o DataFrame usando código;
- Salvar o resultado final de volta no Catálogo como uma Tabela.
1. Como um Spark DataFrame lida com um conjunto de dados que é grande demais para um único computador?
2. O que acontece quando você "modifica" um DataFrame no Spark, como ao remover uma coluna?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo