ฉันมีชุดข้อมูลขนาดใหญ่ที่ฉันจำเป็นต้องแบ่งออกเป็นกลุ่มตามพารามิเตอร์เฉพาะ ฉันต้องการให้งานดำเนินการอย่างมีประสิทธิภาพมากที่สุด ฉันจินตนาการได้สองวิธี
ตัวเลือกที่ 1 - สร้างแผนที่จาก RDD ดั้งเดิมและตัวกรอง
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()
ตัวเลือก 2 - กรอง RDD ดั้งเดิมโดยตรง
def customFilter(record):
return passesSomeTest(record)
rdd0 = rddIn.filter(lambda x: customFilter(x)==False).cache()
rdd1 = rddIn.filter(customFilter).cache()
วิธีการกำปั้นต้องวนซ้ำไปตามระเบียนทั้งหมดของชุดข้อมูลเดิม 3 ครั้งโดยครั้งที่สองจะต้องทำสองครั้งภายใต้สถานการณ์ปกติอย่างไรก็ตามประกายไฟบางอย่างอยู่เบื้องหลังการสร้างกราฟฉากดังนั้นฉันสามารถจินตนาการได้ว่าพวกเขาเป็น ทำได้อย่างมีประสิทธิภาพในลักษณะเดียวกัน คำถามของฉันคือ: a.) เป็นวิธีหนึ่งที่มีประสิทธิภาพมากกว่าวิธีอื่นหรือไม่หรือการสร้างกราฟประกายทำให้เทียบเท่า b.) เป็นไปได้หรือไม่ที่จะทำแยกนี้ในครั้งเดียว