Ukládání do mezipaměti

Úvod do Spark SQL v Pythonu

Mark Plutowski

Data Scientist

Co je ukládání do mezipaměti?

  • Uchovávání dat v paměti
  • Spark uvolňuje paměť agresivně
Úvod do Spark SQL v Pythonu

Zásada vyřazování

  • Nejméně nedávno použité (LRU)
  • Vyřazení probíhá nezávisle na každém uzlu
  • Závisí na dostupné paměti každého uzlu
Úvod do Spark SQL v Pythonu

Ukládání dataframu do mezipaměti

Uložení dataframu do mezipaměti:
df.cache()
Odebrání z mezipaměti:
df.unpersist()
Úvod do Spark SQL v Pythonu

Zjištění, zda je dataframe v mezipaměti

df.is_cached
False
df.cache()
df.is_cached
True
Úvod do Spark SQL v Pythonu

Odebrání dataframu z mezipaměti

df.unpersist()
df.is_cached()
False
Úvod do Spark SQL v Pythonu

Úroveň úložiště

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

Ve výše uvedené úrovni úložiště platí:

  1. useDisk = True
  2. useMemory = True
  3. useOffHeap = False
  4. deserialized = True
  5. replication = 1
Úvod do Spark SQL v Pythonu

Uložení dataframu do mezipaměti

Následující příkazy jsou ve Spark 2.1+ ekvivalentní:

  • df.persist()

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

  • df.cache() je totéž co df.persist()

Úvod do Spark SQL v Pythonu

Ukládání tabulky do mezipaměti

df.createOrReplaceTempView('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.cacheTable('df')
spark.catalog.isCached(tableName='df')
True
Úvod do Spark SQL v Pythonu

Odebrání tabulky z mezipaměti

spark.catalog.uncacheTable('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.clearCache()
Úvod do Spark SQL v Pythonu

Tipy

  • Ukládání do mezipaměti je líné
  • Ukládejte pouze tehdy, pokud bude provedena více než jedna operace
  • Odstraňte z mezipaměti, když objekt již nepotřebujete
  • Ukládejte do mezipaměti výběrově
Úvod do Spark SQL v Pythonu

Pojďme si procvičit

Úvod do Spark SQL v Pythonu

Preparing Video For Download...