Data Analytics Data Engineering Python

Aprender as Funções Spark Filter e Write

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.

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.

Gostou? Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *