2015-10-04 18 views
11

'u nasıl bölüyor? Yani, 3000 satırlık bir rdd'ye sahip olduğumu varsayın. 2000 ilk satırlar sınıf 1 ve 1000 son satırlar sınıf2'dir. RDD, 100 bölüm arasında bölümlenmiştir.Sparks RDD.randomSplit, RDD

fonksiyon aynı zamanda RDD karıştırmak mı RDD.randomSplit(0.8,0.2)

çağıran? Bizim bölme, rdd'den sürekli olarak% 20 numune alıyor mu? Veya bölümlerin% 20'sini rastgele mi seçiyor?

İdeal olarak sonuçlanan bölünme orijinal RDD ile aynı sınıf dağıtımına sahip olur. (Yani 2: 1)

sayesinde weights dizi tarafından tanımlanan her aralığı için

cevap

18

bölümleme koruyan ayrı mapPartitionsWithIndex dönüşüm vardır.

Her bölüm, bir BernoulliCellSamplers kümesi kullanılarak örneklenir. Her bölme için belirli bir bölümün öğeleri üzerinde yineleme yapar ve sonraki rastgele Double'un değeri normalleştirilmiş ağırlıklar tarafından tanımlanan belirli bir aralıkta ise öğeyi seçer. Belirli bir bölüm için tüm örnekleyiciler aynı RNG tohumunu kullanır. Bunu şu anlama gelir:

  • bir RDD karıştırmak değil
  • alır her bölümden rastgele bir örneğini alır tesadüfen dışındaki sürekli blokları almaz örtüşmeyen numuneler
  • n-bölüleri gerektirir veriler üzerinden geçer
İlgili konular