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.
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.
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.
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!
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.
Por fim, deixo algumas sugestões de conteúdos que você pode encontrar no Dados ao Cubo, sempre falando sobre o mundo dos dados.
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 🚀
Fala Galera do mundo dos dados, hora de manipular dados no MongoDB com Python. Dessa…
Fala Galera do mundo dos dados, hora de manipular dados no Cassandra com Python. Dessa…
Fala galera do mundo dos dados, hoje é dia de aprender a função Select do Spark.…
Fala galera do mundo dos dados, hoje é dia de transformar consultas SQL em visualizações…
Fala galera do mundo dos dados, dando continuidade às consultas de banco de dados com…
Fala galera do mundo dos dados, hora de conhecer os bancos de dados NoSQL com…