11

önbelleğe:Kıvılcım Caching: RDD sadece% 8'i aşağıda benim kod parçacığı için

val levelsFile = sc.textFile(levelsFilePath) 
val levelsSplitedFile = levelsFile.map(line => line.split(fileDelimiter, -1)) 
val levelPairRddtemp = levelsSplitedFile 
           .filter(linearr => (linearr(pogIndex).length!=0)) 
           .map(linearr => (linearr(pogIndex).toLong, levelsIndexes.map(x => linearr(x)) 
           .filter(value => (!value.equalsIgnoreCase("") && !value.equalsIgnoreCase(" ") && !value.equalsIgnoreCase("null"))))) 
           .mapValues(value => value.mkString(",")) 
           .partitionBy(new HashPartitioner(24)) 
           .persist(StorageLevel.MEMORY_ONLY_SER) 

levelPairRddtemp.count // just to trigger rdd creation 

Bilgi

  1. dosyanın boyutu ~ Ben 2 executors kullanıyorum 4G
  2. olduğunu (5G her biri) ve 12 çekirdek.
  3. Spark sürümü: Ben Storage tab içinde SparkUI baktığımızda 1.5.2

Sorun

, görüyorum nedir:

enter image description here

RDD içine baktığımızda, 24 partitions'un yalnızca 2'si önbelleğe alınmış gibi görünüyor.

enter image description here

Herhangi bu davranışa açıklama ve nasıl bu sorunu gidermek için.

DÜZENLEME 1: Ben tıpkı HashPartitioner 60 bölümleri ile çalıştı:

.. 
.partitionBy(new HashPartitioner(60)) 
.. 

Ve çalıştı. Şimdi tüm RDD önbelleğe aldım. Tahmin et, burada ne olmuş olabilir? Veri çarpıklığı bu davranışa neden olabilir mi?

Düzenleme-2: Ben 24 partitions ile tekrar çalıştırdığınızda BlockManagerInfo olan günlükler. 24/03 partitions önbelleğe Bu sefer:

16/03/17 14:15:28 INFO BlockManagerInfo: Added rdd_294_14 in memory on ip-10-1-34-66.ec2.internal:47526 (size: 107.3 MB, free: 2.6 GB) 
16/03/17 14:15:30 INFO BlockManagerInfo: Added rdd_294_17 in memory on ip-10-1-34-65.ec2.internal:57300 (size: 107.3 MB, free: 2.6 GB) 
16/03/17 14:15:30 INFO BlockManagerInfo: Added rdd_294_21 in memory on ip-10-1-34-65.ec2.internal:57300 (size: 107.4 MB, free: 2.5 GB) 
+0

Tüm iş bitmeden ekran görüntüsünü almanız mümkün olabilir ve sadece güncellenemedi mi? Günlük dosyalarınız varsa, 'BlockManagerMasterActor' içeren satırları arayabilir misiniz? Aksi takdirde bir hata demektir ... –

+0

Mine, 5 dakikalık bir çevrim ömrü olan bir akış işi. 15 dakika bekledim. – Mohitt

+0

"BlockManagerMaster" dan birkaç günlük aldım, ancak sadece INFO olarak, hata yok. BlockManagerMasterActor' – Mohitt

cevap

1

Ben hafıza sınırlara ulaşıldığında, hatta daha noktada, sen işini izin vermeyin kullanmak bellek seçenekleri tüm kaynaklardan yararlanan bunu sağladığına inanıyoruz.

#partmanları arttırmak, her bir görevin boyutunu azaltmak anlamına gelir, bu da davranışı açıklayabilir.

İlgili konular