- Data Hackers Newsletter
- Posts
- Tutorial completo de PySpark: do básico ao avançado
Tutorial completo de PySpark: do básico ao avançado
Um guia passo a passo para dominar o PySpark, incluindo filtros, joins e manipulação de dados
Neste tutorial completo de PySpark, vamos guiá-lo do básico ao avançado, oferecendo um passo a passo essencial para dominar essa poderosa ferramenta de processamento de dados que combina a robustez do Apache Spark com a simplicidade do Python. Você aprenderá como instalar e configurar o PySpark, criar um SparkSession e manipular dados com DataFrames, além de aplicar filtros e joins para otimizar suas análises.
O que é PySpark?
PySpark é uma API Python para Apache Spark, que serve como o mecanismo de processamento analítico para aplicações que lidam com dados distribuídos em larga escala e com aprendizado de máquina. Essa biblioteca foi criada para facilitar o uso do Apache Spark, permitindo que usuários escrevam códigos em Python enquanto aproveitam a robustez da plataforma Spark.
Uma das grandes vantagens do PySpark é a escalabilidade que oferece. Ele distribui tarefas em vários nós de um cluster, possibilitando o processamento em paralelo de grandes conjuntos de dados. Isso significa que você pode manipular e analisar dados em uma escala que o processamento sequencial tradicional do Python não conseguiria suportar.
Além de ser uma ferramenta poderosa para manipulação de dados, o PySpark também é amplamente utilizado na área de Big Data e Machine Learning. Sua abordagem eficiente permite que analistas e cientistas de dados realizem operações complexas com um desempenho muito melhor do que com métodos sequenciais.

O PySpark se posiciona hoje entre as principais ferramentas para processamento de dados
Como instalar e configurar o PySpark?
Para instalar e configurar o PySpark, siga os passos abaixo:
1. Verifique a versão do Python
O PySpark é compatível com o Python 3.8 e versões superiores. Certifique-se de que seu ambiente esteja utilizando uma versão adequada.
2. Usando o PyPI
Para instalar o PySpark localmente, use o pip. Execute o comando:
pip install pyspark
Se precisar instalar dependências específicas, você pode adicionar opções. Por exemplo:
Para SQL do Spark:
Para a API pandas no Spark e para plotar dados:
Para conectar-se a um cluster Spark:
Para usar uma versão específica do Hadoop:
PYSPARK_HADOOP_VERSION=3 pip install pyspark
3. Usando Conda
Se preferir usar o Conda, crie um ambiente e instale o PySpark:
conda create -n pyspark_env
conda activate pyspark_env
conda install -c conda-forge pyspark
4. Instalando manualmente
Se optar por baixar e instalar manualmente:
Baixe a distribuição do PySpark do site oficial do Apache Spark.
Extraia o arquivo tar em um diretório de sua escolha:
Configure a variável de ambiente
SPARK_HOMEpara apontar para o diretório extraído.Atualize a variável de ambiente
PYTHONPATHpara localizar o PySpark e o Py4J.
5. Instalando a partir do código fonte
Se preferir, você pode instalar o PySpark a partir do código fonte. Consulte a seção “Building Spark” no site oficial para detalhes.
6. Dependências
Certifique-se de que você tenha Java 8 (exceto versões anteriores à 8u371), 11 ou 17 com a variável de ambiente JAVA_HOME configurada corretamente.
7. Verifique as dependências adicionais
Pode ser necessário instalar pacotes adicionais como py4j, pandas, pyarrow, numpy, entre outros, dependendo das funcionalidades que você planeja usar.
Criar um SparkSession
Para utilizar o PySpark, o primeiro passo crucial é criar um SparkSession. O SparkSession é a entrada principal para qualquer funcionalidade oferecida pelo Apache Spark, permitindo a criação e manipulação de DataFrames, execução de operações SQL e configuração de parâmetros da aplicação.
Código para criar um SparkSession
Um exemplo de como criar um SparkSession em Python é o seguinte:
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Nome do seu aplicativo") \
.config("spark.memory.offHeap.enabled", "true") \
.config("spark.memory.offHeap.size", "10g") \
.getOrCreate()
Neste trecho de código, a inicialização do SparkSession é realizada com o método builder. Você verá que as configurações de memória podem ser ajustadas usando .config().
Importância do SparkSession
A criação do SparkSession é essencial, pois é através dele que você interage com a plataforma Spark e seus recursos, simplificando o processo de manipulação de dados.
Manipular dados com DataFrame
Para manipular dados com DataFrames no PySpark, siga os passos abaixo:
Configuração do ambiente PySpark: Certifique-se de que você tem o PySpark instalado e inicie uma nova SparkSession:
Carregamento de dados em um DataFrame: Carregue dados a partir de um arquivo CSV:
Selecionando colunas: Utilize o método
.select()para trabalhar apenas com um subconjunto das colunas:Filtrando dados: Use os métodos
.filter()ou.where()para filtrar a DataFrame com base em condições específicas:Agregando dados: Realize operações de agregação usando o método
.groupBy()em conjunto com funções como.sum()ou.avg():Criar novas colunas: Adicione novas colunas usando o método
.withColumn():Juntando DataFrames: Combine dois DataFrames usando o método
.join():
Essas operações representam uma introdução sólida para manipulação de dados utilizando DataFrames no PySpark.
Aplicar filtros e joins no PySpark
Aplicar filtros e joins no PySpark é essencial para a manipulação eficiente de grandes volumes de dados. Abaixo estão algumas práticas recomendadas:
Entenda seus dados
Antes de aplicar filtros e joins, é essencial pré-inspecionar os dados, familiarizando-se com o tamanho, a distribuição e as colunas de interesse.
Criação dos DataFrames
Crie os DataFrames que deseja unir. Por exemplo:
from pyspark.sql.session import SparkSession
spark = SparkSession.builder.appName('Joins').getOrCreate()
# DataFrame do lado esquerdo
schema_left = ['id', 'nome', 'gênero', 'dept_id']
data_left = [
(1, 'Robert', 'M', '10'),
(2, 'Bill', 'M', '20'),
(3, 'Brooke', 'F', '30'),
(4, 'Matei', 'M', '40'),
(5, 'Fulano', 'M', '50')
]
left_df = spark.createDataFrame(data=data_left, schema=schema_left)
# DataFrame do lado direito
schema_right = ['dept_id', 'dept_nome']
data_right = [
(10, 'Data Engineer'),
(20, 'Product Manager'),
(30, 'Machine Learning Lead'),
(40, 'Chief Technologist'),
(60, 'Engineering Director')
]
right_df = spark.createDataFrame(data=data_right, schema=schema_right)
Realização do join
Você pode realizar diferentes tipos de joins, como inner, outer, left e right:
# Inner join
inner_df = left_df.join(right_df, on=['dept_id'], how='inner')
inner_df.show(truncate=False)
# Outer join
outer_df = left_df.join(right_df, on=['dept_id'], how='outer')
outer_df.show(truncate=False)
Uso de filtros na cláusula join
Use filtros durante a junção. Exemplo para filtrar registros do gênero masculino e dept_id maior que 10:
from pyspark.sql.functions import col
join_filter_df = (
left_df.filter(col('gênero') == 'M')
.join(right_df.filter(col('dept_id') >= 20), on=['dept_id'], how='inner')
)
join_filter_df.show(truncate=False)
Melhores práticas
Filtrar previamente: Aplique filtros para reduzir o tamanho dos DataFrames antes do join.
Escolher o tipo de join adequado: Utilize o tipo de join que melhor se adapta às suas necessidades.
Monitorar e ajustar: Use
.explain()para examinar o plano de execução dos joins e ajuste configurações do Spark conforme necessário.
Construir modelos de machine learning com PySpark
Construir modelos de machine learning com PySpark envolve várias etapas:
Instalando o PySpark: Garanta que o ambiente esteja configurado corretamente:
Carregando os dados: Use o
SparkSessionpara carregar os dados em um DataFrame:Pré-processamento de dados: É crucial limpar e preparar os dados:
Preenchendo valores nulos:
Selecionando características com VectorAssembler:
Divisão do dataset: Separe os dados em conjuntos de treinamento e teste:
Construindo o modelo: Utilize algoritmos disponíveis no PySpark. Exemplo com uma regressão logística:
Fazendo previsões: Use o modelo treinado para prever novos dados:
Avaliação do modelo: Utilize métricas de avaliação como
MulticlassClassificationEvaluator:
Esses passos oferecem uma visão geral sólida sobre como construir e avaliar modelos de machine learning usando PySpark.
Exemplos práticos de uso do PySpark
O PySpark é uma ferramenta poderosa para o processamento de grandes volumes de dados. Aqui estão alguns exemplos práticos:
Análise de grandes conjuntos de dados: O PySpark permite realizar consultas em petabytes de dados.
Desenvolvimento de modelos de aprendizado de máquina: Utiliza algoritmos como K-Means para segmentação de clientes.
Processamento de dados em tempo real: Permite manipular fluxos de dados continuamente atualizados.
Análise de sentimentos em mídias sociais: Processa dados de mídias sociais para identificar tendências de consumidores.
Detecção de fraudes financeiras: Analisa transações em tempo real para detectar padrões suspeitos.
Criação de classificadores de aprendizado de máquina: Envolve operações de pré-processamento e avaliação de um classificador.
Dicas para aprender PySpark rapidamente
Aprender PySpark pode ser desafiador, mas com algumas estratégias, você pode acelerar seu aprendizado:
Base sólida em Python e SQL: Um entendimento básico dessas linguagens é crucial.
Limite seu escopo: Foque em uma área específica de interesse.
Pratique com frequência: Reserve um tempo para praticar regularmente.
Trabalhe em projetos reais: Aplique suas habilidades em projetos práticos.
Use DataFrames e SQL sempre que possível.
Minimize o uso de UDFs: Prefira funções nativas do PySpark.
Aproveite cursos online gratuitos: Utilize recursos como a Databricks Academy.
Envolva-se em uma comunidade: Participe de fóruns e grupos de discussão.
Cometa erros e aprenda com eles: Os erros são oportunidades de aprendizado.
Continue os estudos e recursos visuais: Utilize materiais visuais para reforçar o aprendizado.
Conclusão
Resumindo, neste tutorial completo de PySpark, desbravamos desde a instalação e configuração até a manipulação avançada de dados com DataFrames, além de práticas comuns como filtros e joins. Você também aprendeu a construir e avaliar modelos de machine learning, aproveitando o poder do Apache Spark com a simplicidade do Python.
Com os exemplos práticos apresentados, ficou claro que o PySpark é uma ferramenta indispensável para profissionais de dados que buscam eficiência e escalabilidade em suas análises e projetos de aprendizado de máquina. Agora, é hora de colocar em prática os conhecimentos adquiridos e explorar ainda mais as possibilidades que o PySpark pode oferecer à sua carreira em dados.