Saya memiliki dataset besar yang perlu saya bagi menjadi beberapa kelompok sesuai dengan parameter tertentu. Saya ingin pekerjaan diproses seefisien mungkin. Saya dapat membayangkan dua cara untuk melakukannya
Opsi 1 - Buat peta dari RDD asli dan filter
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()
Opsi 2 - Saring RDD asli secara langsung
def customFilter(record):
return passesSomeTest(record)
rdd0 = rddIn.filter(lambda x: customFilter(x)==False).cache()
rdd1 = rddIn.filter(customFilter).cache()
Metode tinju harus mengulangi semua catatan dari data asli yang ditetapkan 3 kali, di mana yang kedua hanya harus melakukannya dua kali, dalam keadaan normal, namun, percikan melakukan beberapa di belakang layar grafik bangunan, jadi saya bisa membayangkan bahwa mereka efektif dilakukan dengan cara yang sama. Pertanyaan saya adalah: a.) Apakah satu metode lebih efisien daripada yang lain, atau apakah bangunan grafik percikan membuatnya setara b.) Apakah mungkin untuk melakukan split ini dalam satu pass tunggal