image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Júlio Droszczak
Júlio Droszczak11/11/2024 11:52
Compartilhe

Otimizando Filtros em PySpark com isin(), cache() e broadcast() 🚀

  • #Databricks
  • #Python
  • #PySpark

No PySpark, podemos melhorar significativamente a performance das consultas trocando OR por isin() e aplicando técnicas como cache() e broadcast() para otimizações ainda maiores.

 

Usando isin() para substituição do OR

Em vez de usar várias condições OR, o isin() é uma forma mais eficiente de filtrar múltiplos valores.

 

🔴 Consulta com OR:

df.filter((df['coluna'] == 'A') | (df['coluna'] == 'B') | (df['coluna'] == 'C')).show()

 

🟢 Consulta otimizada com isin():

df.filter(df['coluna'].isin(['A', 'B', 'C'])).cache().show()

 

 

🔍 Por que usar isin()?

Essa função permite ao Spark processar múltiplos valores ao mesmo tempo, em vez de fazer comparações individuais para cada valor, o que acelera o processamento.

 

Melhorando com cache() e broadcast()

Para aumentar ainda mais a performance, use cache() para armazenar DataFrames em memória quando eles são reutilizados em diferentes etapas do processamento. Além disso, para joins entre DataFrames grandes e pequenos, aplique broadcast().

 

Exemplo com broadcast para joins:

from pyspark.sql.functions import broadcast

df_large.join(broadcast(df_small), df_large.coluna == df_small.coluna).show()

 

 

🔍 Por que usar broadcast()?

broadcast() distribui o DataFrame pequeno para todos os nós do cluster, evitando que grandes quantidades de dados sejam movimentadas. Isso acelera consideravelmente os joins entre grandes e pequenos conjuntos de dados.

Júlio César Droszczak

Compartilhe
Recomendados para você
Suzano - Python Developer
BairesDev - Machine Learning Practitioner
Santander Bootcamp Cibersegurança #2
Comentários (0)