Cache

Introdução ao Spark SQL em Python

Mark Plutowski

Data Scientist

O que é cache?

  • Manter dados na memória
  • O Spark tende a liberar memória de forma agressiva
Introdução ao Spark SQL em Python

Política de remoção

  • Least Recently Used (LRU)
  • A remoção ocorre independentemente em cada worker
  • Depende da memória disponível de cada worker
Introdução ao Spark SQL em Python

Fazendo cache de um dataframe

Para fazer cache de um dataframe:
df.cache()
Para remover do cache:
df.unpersist()
Introdução ao Spark SQL em Python

Ver se um dataframe está em cache

df.is_cached
False
df.cache()
df.is_cached
True
Introdução ao Spark SQL em Python

Removendo cache de um dataframe

df.unpersist()
df.is_cached()
False
Introdução ao Spark SQL em Python

Nível de armazenamento

df.unpersist()
df.cache()
df.storageLevel
StorageLevel(True, True, False, True, 1)

No nível de armazenamento acima, valem:

  1. useDisk = True
  2. useMemory = True
  3. useOffHeap = False
  4. deserialized = True
  5. replication = 1
Introdução ao Spark SQL em Python

Persistindo um dataframe

As opções abaixo são equivalentes no Spark 2.1+:

  • df.persist()

  • df.persist(storageLevel=pyspark.StorageLevel.MEMORY_AND_DISK)

  • df.cache() é o mesmo que df.persist()

Introdução ao Spark SQL em Python

Fazendo cache de uma tabela

df.createOrReplaceTempView('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.cacheTable('df')
spark.catalog.isCached(tableName='df')
True
Introdução ao Spark SQL em Python

Removendo cache de uma tabela

spark.catalog.uncacheTable('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.clearCache()
Introdução ao Spark SQL em Python

Dicas

  • Cache é lazy
  • Só faça cache se for usar mais de uma vez
  • Dê unpersist quando não precisar mais
  • Faça cache de forma seletiva
Introdução ao Spark SQL em Python

Vamos praticar!

Introdução ao Spark SQL em Python

Preparing Video For Download...