Caching

Pengantar Spark SQL dalam Python

Mark Plutowski

Data Scientist

What is caching?

  • Menyimpan data di memori
  • Spark cenderung membebaskan memori secara agresif
Pengantar Spark SQL dalam Python

Eviction Policy

  • Least Recently Used (LRU)
  • Pengusiran terjadi terpisah di tiap worker
  • Bergantung pada memori yang tersedia per worker
Pengantar Spark SQL dalam Python

Caching a dataframe

Untuk cache dataframe:
df.cache()
Untuk uncache:
df.unpersist()
Pengantar Spark SQL dalam Python

Mengetahui apakah dataframe di-cache

df.is_cached
False
df.cache()
df.is_cached
True
Pengantar Spark SQL dalam Python

Uncaching a dataframe

df.unpersist()
df.is_cached()
False
Pengantar Spark SQL dalam Python

Storage level

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

Pada storage level di atas berlaku hal berikut:

  1. useDisk = True
  2. useMemory = True
  3. useOffHeap = False
  4. deserialized = True
  5. replication = 1
Pengantar Spark SQL dalam Python

Persisting a dataframe

Berikut setara di Spark 2.1+:

  • df.persist()

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

  • df.cache() sama dengan df.persist()

Pengantar Spark SQL dalam Python

Caching a table

df.createOrReplaceTempView('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.cacheTable('df')
spark.catalog.isCached(tableName='df')
True
Pengantar Spark SQL dalam Python

Uncaching a table

spark.catalog.uncacheTable('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.clearCache()
Pengantar Spark SQL dalam Python

Tips

  • Caching bersifat lazy
  • Hanya cache jika akan ada >1 operasi
  • Unpersist saat objek tidak lagi diperlukan
  • Cache secara selektif
Pengantar Spark SQL dalam Python

Ayo berlatih!

Pengantar Spark SQL dalam Python

Preparing Video For Download...