Caching

Introductie tot Spark SQL in Python

Mark Plutowski

Data Scientist

Wat is caching?

  • Data in geheugen houden
  • Spark leegt geheugen vaak agressief
Introductie tot Spark SQL in Python

Evictiebeleid

  • Least Recently Used (LRU)
  • Verwijderen gebeurt per worker afzonderlijk
  • Hangt af van het geheugen van elke worker
Introductie tot Spark SQL in Python

Een dataframe cachen

Een dataframe cachen:
df.cache()
Cache verwijderen:
df.unpersist()
Introductie tot Spark SQL in Python

Controleren of een dataframe is gecachet

df.is_cached
False
df.cache()
df.is_cached
True
Introductie tot Spark SQL in Python

Cache van een dataframe verwijderen

df.unpersist()
df.is_cached()
False
Introductie tot Spark SQL in Python

Opslagniveau

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

In het bovenstaande opslagniveau geldt:

  1. useDisk = True
  2. useMemory = True
  3. useOffHeap = False
  4. deserialized = True
  5. replication = 1
Introductie tot Spark SQL in Python

Een dataframe persisteren

Het volgende is equivalent in Spark 2.1+:

  • df.persist()

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

  • df.cache() is hetzelfde als df.persist()

Introductie tot Spark SQL in Python

Een tabel cachen

df.createOrReplaceTempView('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.cacheTable('df')
spark.catalog.isCached(tableName='df')
True
Introductie tot Spark SQL in Python

Cache van een tabel verwijderen

spark.catalog.uncacheTable('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.clearCache()
Introductie tot Spark SQL in Python

Tips

  • Caching is lui
  • Cache alleen als je meer dan één bewerking doet
  • Unpersist als je het object niet meer nodig hebt
  • Cache selectief
Introductie tot Spark SQL in Python

Laten we oefenen!

Introductie tot Spark SQL in Python

Preparing Video For Download...