1
การเขียนมากกว่า 50 ล้านจาก Pyspark df ไปยัง PostgresSQL ซึ่งเป็นวิธีการที่มีประสิทธิภาพที่สุด
อะไรจะเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการแทรกเรคคอร์ดนับล้านบันทึกว่า 50 ล้านจาก Spark dataframe ไปยัง Postgres Tables ฉันได้ทำสิ่งนี้ตั้งแต่ประกายไปจนถึง MSSQL ในอดีตโดยใช้ประโยชน์จากการคัดลอกจำนวนมากและตัวเลือกขนาดแบทช์ซึ่งก็ประสบความสำเร็จเช่นกัน มีบางอย่างที่คล้ายกันที่สามารถอยู่ที่นี่สำหรับ Postgres ได้หรือไม่ เพิ่มรหัสฉันได้ลองและเวลาที่ใช้ในการเรียกใช้กระบวนการ: def inserter(): start = timer() sql_res.write.format("jdbc").option("numPartitions","5").option("batchsize","200000")\ .option("url", "jdbc:postgresql://xyz.com:5435/abc_db") \ .option("dbtable", "public.full_load").option("user", "root").option("password", "password").save() end = timer() print(timedelta(seconds=end-start)) inserter() ดังนั้นผมจึงไม่ได้วิธีการดังกล่าวข้างต้น 10 ล้านแผ่นและมี 5 เชื่อมต่อแบบขนานตามที่ระบุในnumPartitionsและยังพยายามขนาดชุดของ 200k เวลาทั้งหมดที่ใช้ในกระบวนการคือ0: 14: 05.760926 (สิบสี่นาทีและห้าวินาที) มีวิธีอื่นที่มีประสิทธิภาพซึ่งจะลดเวลาหรือไม่? ขนาดแบทช์ที่มีประสิทธิภาพหรือเหมาะสมที่สุดที่ฉันสามารถใช้ได้คืออะไร การเพิ่มขนาดชุดของฉันจะทำงานเร็วขึ้นหรือไม่ หรือเปิดการเชื่อมต่อที่หลากหลายเช่น> 5 ช่วยให้กระบวนการเร็วขึ้นหรือไม่ บนเฉลี่ย …