image

Accede a bootcamps ilimitados y a mĂĄs de 650 cursos

50
%OFF
Article image
JĂșlio Droszczak
JĂșlio Droszczak11/11/2024 11:52
Compartir

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

    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

    Compartir
    Comentarios (0)