Önbellekleme

Python ile Spark SQL'e Giriş

Mark Plutowski

Data Scientist

Önbelleğe alma nedir?

  • Veriyi bellekte tutma
  • Spark belleği agresif biçimde boşaltma eğilimindedir
Python ile Spark SQL'e Giriş

Tahliye politikası

  • En Son En Az Kullanılan (LRU)
  • Tahliye her işçi üzerinde bağımsızdır
  • Her işçideki kullanılabilir belleğe bağlıdır
Python ile Spark SQL'e Giriş

Bir dataframe’i önbelleğe alma

Bir dataframe’i önbelleğe almak için:
df.cache()
Önbelleğini kaldırmak için:
df.unpersist()
Python ile Spark SQL'e Giriş

Bir dataframe’in önbellekte olup olmadığını belirleme

df.is_cached
False
df.cache()
df.is_cached
True
Python ile Spark SQL'e Giriş

Bir dataframe’in önbelleğini kaldırma

df.unpersist()
df.is_cached()
False
Python ile Spark SQL'e Giriş

Depolama düzeyi

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

Yukarıdaki depolama düzeyinde aşağıdakiler geçerlidir:

  1. useDisk = True
  2. useMemory = True
  3. useOffHeap = False
  4. deserialized = True
  5. replication = 1
Python ile Spark SQL'e Giriş

Bir dataframe’i kalıcılaştırma

Spark 2.1+ sürümünde aşağıdakiler eşdeğerdir:

  • df.persist()

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

  • df.cache(), df.persist() ile aynıdır

Python ile Spark SQL'e Giriş

Bir tabloyu önbelleğe alma

df.createOrReplaceTempView('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.cacheTable('df')
spark.catalog.isCached(tableName='df')
True
Python ile Spark SQL'e Giriş

Bir tablonun önbelleğini kaldırma

spark.catalog.uncacheTable('df')
spark.catalog.isCached(tableName='df')
False
spark.catalog.clearCache()
Python ile Spark SQL'e Giriş

İpuçları

  • Önbelleğe alma tembeldir
  • Yalnızca birden fazla işlem yapacaksanız önbelleğe alın
  • Nesneye ihtiyaç kalmadığında unpersist edin
  • Seçici önbelleğe alın
Python ile Spark SQL'e Giriş

Hadi pratik yapalım

Python ile Spark SQL'e Giriş

Preparing Video For Download...