หากคุณยินดีที่จะใช้รูปแบบผลลัพธ์ที่กำหนดเองคุณจะสามารถรับพฤติกรรมที่ต้องการด้วย RDD ได้เช่นกัน
ดูคลาสต่อไปนี้:
FileOutputFormat ,
FileOutputCommitter
ในรูปแบบไฟล์เอาต์พุตคุณมีเมธอดชื่อ checkOutputSpecs ซึ่งกำลังตรวจสอบว่ามีไดเร็กทอรีเอาต์พุตอยู่หรือไม่ ใน FileOutputCommitter คุณมีคอมมิตซึ่งมักจะถ่ายโอนข้อมูลจากไดเร็กทอรีชั่วคราวไปยังตำแหน่งสุดท้าย
ฉันยังไม่สามารถตรวจสอบได้ (จะทำทันทีที่ฉันมีเวลาว่างไม่กี่นาที) แต่ในทางทฤษฎี: ถ้าฉันขยาย FileOutputFormat และแทนที่ checkOutputSpecs เป็นวิธีการที่ไม่ทิ้งข้อยกเว้นในไดเรกทอรีที่มีอยู่แล้วและปรับ วิธีการกระทำของคอมมิทเตอร์เอาต์พุตที่กำหนดเองของฉันเพื่อดำเนินการตามตรรกะที่ฉันต้องการ (เช่นแทนที่ไฟล์บางไฟล์ต่อท้ายไฟล์อื่น ๆ ) มากกว่าที่ฉันอาจจะสามารถบรรลุพฤติกรรมที่ต้องการด้วย RDD ได้เช่นกัน
รูปแบบผลลัพธ์จะถูกส่งไปยัง: saveAsNewAPIHadoopFile (ซึ่งเป็นวิธีการที่เรียกว่า saveAsTextFile เพื่อบันทึกไฟล์จริงๆ) และคอมมิตเตอร์เอาต์พุตถูกกำหนดค่าที่ระดับแอ็พพลิเคชัน