Fala galera do mundo dos dados, hoje é dia de aprender as funções Spark filter e write no PySpark. Dando continuidade a série Fluxo de Dados com Spark! Chegou a hora de aprender algumas funções do Spark. Como precisamos pegar dados em algum lugar para levar eles após o processamento para outro lugar. Já aprendemos a trabalhar com as origens dos dados, agora precisamos filtrar e gravar em outro lugar.
Sendo assim, iremos apresentar como filtrar e gravar dados com Spark. Para começar vale relembrar como ler um arquivo json. Sem mais delongas vamos à prática com Dados ao Cubo.
Ler Dataframe com o Spark
Primeiramente, temos que conhecer a origem dos dados. Aqui temos um arquivo de carros com nome de cars.json.
Para começar temos a criação da sessão Spark, lembrando que sessão é a base para trabalhar com o Spark. Na sequência a leitura do arquivo JSON para DataFrame, vamos ler um arquivo JSON chamado cars.json e criar um DataFrame chamado df_cars. E então a exibição do DataFrame, o comando show simplesmente exibe o conteúdo do df_cars. Podemos verificar se a leitura do JSON foi feita corretamente.
from pyspark.sql import SparkSession if __name__ == __main__: spark = SparkSession.builder.getOrCreate() df_cars = spark.read.json(cars.json) df_cars.show(5)
E então temos os dados carregados sendo exibidos na imagem abaixo.
Podemos ainda, imprimir o esquema schema do DataFrame. O esquema descreve a estrutura dos dados no DataFrame, incluindo o nome das colunas e os tipos de dados associados a cada coluna. Para isso utilizamos a função printSchema, conforme código a seguir.
df_cars.printSchema()
Confere o resultado na imagem abaixo.
Para completar a leitura e saber que carregamos tudo certinho, temos a função count que irá mostrar quantos registros tem o DataFrame.
df_cars.count()
Com os dados carregados, chegou a hora de filtrar e em seguida gravar os dados de acordo com os filtros.
Filtrar Dataframe com o Spark
Para filtrar um Dataframe com o Spark, utilizamos a função filter seguida de uma ou mais condições a serem aplicadas aos dados.
Aqui, estamos filtrando o df_cars para incluir apenas as linhas em que a coluna Origin é igual a “Europe”. Ou seja, estamos selecionando apenas os carros de origem europeia. Em seguida, exibe o resultado do filtro e imprime na tela o DataFrame resultante da operação anterior.
df_cars_eu = df_cars.filter(Origin = "Europe").show()
Então, esse código em Python com PySpark está filtrando carros de um DataFrame chamado df_cars, mantendo apenas aqueles de origem europeia, e em seguida, exibe esse resultado na tela, conforme imagem abaixo.
Agora faremos o filtro no df_cars para incluir apenas as linhas em que a coluna Origin é igual a “USA”. Ou seja, estamos selecionando apenas os carros de origem dos Estados Unidos. Em seguida, exibe o resultado do filtro e imprime na tela o DataFrame resultante da operação anterior.
df_cars_us = df_cars.filter(Origin = "USA").show()
Então, temos na imagem abaixo o DataFrame apenas os carros de origem dos Estados Unidos sendo exibidos.
Para finalizar os filtros, agora faremos o filtro no df_cars para incluir apenas as linhas em que a coluna Acceleration é maior que “14.2”. Ou seja, estamos selecionando apenas os carros com aceleração maior que 14.2. Em seguida, exibe o resultado do filtro e imprime na tela o DataFrame.
df_cars.filter(Acceleration > 14.2).show()
Confere na imagem abaixo o DataFrame apenas os carros com aceleração maior que 14.2 sendo exibidos.
Aplicando os filtros necessários podemos gravar os novos DataFrames criados.
Gravar Dataframe com o Spark
Para filtrar um Dataframe com o Spark, utilizamos a função write seguida do formato aplicado aos dados.
Aqui, estamos filtrando o df_cars para incluir apenas as linhas em que a coluna Origin é igual a “Europe”. Em seguida, o comando write está escrevendo o df_cars_eu em um arquivo CSV. O argumento cars_eu especifica o nome do diretório onde os arquivos CSV serão armazenados.
df_cars_eu = df_cars.filter(Origin = "Europe") df_cars_eu.write.csv(cars_eu)
Em resumo, esse código em Python com PySpark está filtrando carros de um DataFrame chamado df_cars, mantendo apenas aqueles de origem europeia, e em seguida, salvando esses dados em um arquivo CSV no diretório cars_eu. Observe o resultado na imagem abaixo.
Agora faremos para os carros de origem dos Estados Unidos. Aqui, estamos filtrando o df_cars para incluir apenas as linhas em que a coluna Origin é igual a “USA”. Em seguida, o comando write está escrevendo o df_cars_us em um arquivo CSV. O argumento cars_us especifica o nome do diretório onde os arquivos CSV serão armazenados.
df_cars_us = df_cars.filter(Origin = "USA") df_cars_us.write.csv(cars_us)
Observe o resultado na imagem abaixo, o arquivo CSV apenas com os carros de origem dos Estados Unidos no diretório cars_us.
E então fechamos as primeiras funções Spark. Gostou? Quer mais? Confere todo esse passo a passo das funções Spark filter e write com Spark em vídeo, no canal do Fluxo de Dados!
Funções Spark Filter e Write com o Fluxo de Dados
Esse conteúdo é uma parceria com o canal do Fluxo de Dados, lá você confere as funções Spark filter e write e muito mais.
E então finalizamos mais um post da série Fluxo de Dados com Spark . Fica ligado nos próximos conteúdos que vai ter toda a continuidade de como trabalhar com Spark. Ao final desta série, você estará pronto para embarcar em suas próprias jornadas analíticas usando PySpark. A capacidade de processar dados em escala e realizar análises complexas torna PySpark uma ferramenta valiosa para profissionais que buscam explorar o potencial máximo do big data.
Conteúdos ao Cubo
Por fim, deixo algumas sugestões de conteúdos que você pode encontrar no Dados ao Cubo, sempre falando sobre o mundo dos dados.
- Boas Práticas de Visualização de Dados Parte I
- Boas Práticas de Visualização de Dados Parte II
- Regressão com scikit-learn
- Engenharia de Atributos AKA Feature Engineering Parte I
- Engenharia de Atributos AKA Feature Engineering Parte II
- O Guia do XGBoost com Python
- Análise de Dados com Numpy Python
- Visualizar Dados do PostgreSQL no Metabase
Finalizo com um convite para você ser Parceiro de Publicação Dados ao Cubo e escrever o próximo artigo, compartilhando conhecimento para toda a comunidade de dados. Não esqueça de assinar a nossa Newsletter para ficar por dentro de todas as novidades.
Apaixonado por dados e tecnologia ❤️ , criando soluções com dados 📊 📈 , desde 2015, sempre buscando tornar os processos orientados! Com formação em Engenharia da Computação 💾 , MBA Gestão da Informação e Business Intelligence e Especialização em Data Science.
Também atuo como professor na área de dados. Nas horas vagas crio modelos de Machine Learning 🤖 com Python em desafios do Kaggle e escrevo no Dados ao Cubo sobre o mundo dos dados 🎲 !
Compartilhando conhecimentos sempre 🚀