Belirli parametrelere göre gruplara ayırmak için gereken büyük bir veri kümesi var. İşin mümkün olduğunca verimli bir şekilde işlenmesini istiyorum. Bunu yapmanın iki yolunu hayal edebilirim
Seçenek 1 - Orijinal RDD'den harita oluşturma ve filtreleme
def customMapper(record):
if passesSomeTest(record):
return (1,record)
else:
return (0,record)
mappedRdd = rddIn.map(lambda x: customMapper(x))
rdd0 = mappedRdd.filter(lambda x: x[0]==0).cache()
rdd1 = mappedRdd.filter(lambda x: x[1]==1).cache()
Seçenek 2 - Orijinal RDD'yi doğrudan filtreleyin
def customFilter(record):
return passesSomeTest(record)
rdd0 = rddIn.filter(lambda x: customFilter(x)==False).cache()
rdd1 = rddIn.filter(customFilter).cache()
Yumruk yöntemi orijinal veri kümesinin tüm kayıtlarını 3 kez yinelemek zorundadır, burada ikincisi sadece iki kez yapmak zorundadır, ancak normal koşullar altında kıvılcım sahnelerin grafik binasının arkasında bazı şeyler yapar, bu yüzden etkili bir şekilde aynı şekilde yapılır. Sorularım: a.) Bir yöntem diğerinden daha verimli mi, yoksa kıvılcım grafiği oluşturma onları eşdeğer yapıyor mu?) Bu ayrımı tek bir geçişte yapmak mümkün mü