2015-04-07 18 views
5

bir kısmını tutar. Sorum şu, kalan kısımlar nerede? Spark, önbellekte hangi bölümün ayrılacağına nasıl karar veriyor?kıvılcım önbellek sadece ben açıkça rdd.cache çağırdığınızda, ben RDD yalnızca bir kısmını aslında önbelleğe kıvılcım konsol depolama sekmesinden görebilirsiniz RDD

Aynı soru sc.textFile tarafından okunur başlangıç ​​ham veri() için de geçerlidir. Kıvılcım konsolu depolama tablosu önbellek durumu hakkında herhangi bir bilgi göstermese de, bu rdd'lerin otomatik olarak önbelleğe alındığını anlıyorum. Bunların ne kadarının önbelleğe saklanıp eksik olduğunu biliyor muyuz?

cevap

3

cache()persist(StorageLevel.MEMORY_ONLY) aynıdır ve verileri kullanma miktarı muhtemelen kullanılabilir belleği aşıyor. Kıvılcım daha sonra önbellekleri "en az kullanılan" bir şekilde çıkarır.

Sen yapılandırma seçeneklerini ayarlayarak önbelleğe alma için ayrılmış bellek ince ayar yapabilirsiniz. Detaylar için Spark Documentation bakın ve dikkat: spark.driver.memory, spark.executor.memory, spark.storage.memoryFraction

değil bir uzman, ama textFile() otomatik bir şey önbelleğe sanmıyorum; açıklama için sc.textFile(logFile, 2).cache()

+0

Teşekkür: Spark Quick Start açıkça bir metin dosyası RDD önbelleğe alır. Biraz düşük önbellek numarası gördüm. Eksik kısmın, kıvılcım yürütücüler tarafından bellek yetersiz kalmasından kaynaklandığı görülmemiştir. Emin olamaz. Ayrıca, giriş verilerinin otomatik olarak önbelleğe alındığını bir kez okudum. Artık makaleyi bulamıyorum. Bakmaya devam edeceğim. – bhomass

+0

Varsayılan önbellek maksimum 300 m'dir (512mb varsayılan yığın boyutu * 0,6 bellekFraction, eksi başka ek yükler). Sürücü veya yürütücü belleğini artırmanız gerekirse, kurulumunuza bağlıdır. Spark'i yerel olarak mı yoksa bir kümeyle mi çalıştırıyorsunuz? Eğer yerel olarak, sadece “spark.driver.memory” yi değiştirmeniz gerekir. – stholzm

+0

Önbellekleniyorsanız, ilk adımın bellekte bir nesne olarak hesaplanması ve önbelleğe alınması pahalı olduğundan, alternatif bir depolama düzeyiyle persit yöntemini kullanmak daha iyi olur. https://spark.apache.org/docs/latest/programming-guide.html#rdd-persistence MEMORY_ONLY_SET, bellekte daha fazla sıkıştırmanızı sağlar (veri yapmamla x4), DISK seçenekleri diskte önbelleğe almanızı sağlar –

İlgili konular