Satırları gerektiğinde yerel olarak toplayabilmem için satırları RDD birimimden tek seferde (veya küçük gruplar halinde) döndürmek istiyorum. RDD'm, isim düğümünde belleğe sığamayacak kadar büyük, bu nedenle collect()
'un çalıştırılması bir hataya neden olabilir.pyspark arabelleğinde RDD'yi topla
collect()
işlemini yeniden oluşturmak için bir yol var mı, ancak bir jeneratör ile RDD satırları bir arabelleğe geçirilir? Başka bir seçenek, önbelleğe alınmış bir RDD'den gelen bir zamanda take()
100000 satırları olacaktır, ancak take()
'un bir başlangıç konumu belirlemenize olanak sağladığını düşünmüyorum?
"saveAsTextFile" den kaçınmak istediğiniz bir şey var mı? Çünkü her şeyi bir dosyaya aktarabilir ve sonra bir tampondan okuyabilirsiniz. –
@ paul-k Şu anda saveAsTextFile kullanıyorum, ancak bunun birkaç sorunu var: 1) okuma zamanı yavaş, çünkü bunlar metin dosyaları ve 2) veri türleri hakkında bilgi kaybediyorum, yani '1' 1 – mgoldwasser
ile aynıdır Bu doğru 2) hala bir sorun ama dosya boyutu açısından çok ekonomik olmasa bile tür bilgisi yazabilirsiniz. nesneleri serileştirmek için SaveAsPickleFile'ı da arayabilirsiniz. 1) Bunun, "topla" uygulamasının gerçek uygulamadan daha yavaş olacağını düşünmüyorum çünkü dokümanlardaki geçici dosyadan okuyor: ps: //spark.apache.org/docs/0.7.2/api/pyspark /pyspark.rdd-pysrc.html#RDD.collect –