Caching

Einführung in Spark SQL mit Python

Mark Plutowski

Data Scientist

Was ist Caching?

  • Daten im Speicher halten
  • Spark räumt Speicher aggressiv frei
Einführung in Spark SQL mit Python

Eviction-Policy

  • Least Recently Used (LRU)
  • Eviction passiert unabhängig auf jedem Worker
  • Hängt vom Speicher jedes Workers ab
Einführung in Spark SQL mit Python

Ein DataFrame cachen

So cachst du ein DataFrame:
df.cache()
So entcachst du es:
df.unpersist()
Einführung in Spark SQL mit Python

Prüfen, ob ein DataFrame gecacht ist

df.is_cached
False
df.cache()
df.is_cached
True
Einführung in Spark SQL mit Python

Ein DataFrame entcachen

df.unpersist()
df.is_cached()
False
Einführung in Spark SQL mit Python

Storage-Level

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

Im obigen Storage-Level gilt:

  1. useDisk = True
  2. useMemory = True
  3. useOffHeap = False
  4. deserialized = True
  5. replication = 1
Einführung in Spark SQL mit Python

DataFrame persistieren

Folgendes ist in Spark 2.1+ gleichwertig:

  • df.persist()

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

  • df.cache() ist dasselbe wie df.persist()

Einführung in Spark SQL mit Python

Tabelle cachen

df.createOrReplaceTempView('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.cacheTable('df')
spark.catalog.isCached(tableName='df')
True
Einführung in Spark SQL mit Python

Tabelle entcachen

spark.catalog.uncacheTable('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.clearCache()
Einführung in Spark SQL mit Python

Tipps

  • Caching ist lazy
  • Nur cachen, wenn mehrere Operationen folgen
  • Unpersist, wenn das Objekt nicht mehr nötig ist
  • Selektiv cachen
Einführung in Spark SQL mit Python

Lass uns üben!

Einführung in Spark SQL mit Python

Preparing Video For Download...