Điều gì sẽ là cách hiệu quả nhất để chèn hàng triệu bản ghi nói 50 triệu từ khung dữ liệu Spark vào Bảng Postgres. Tôi đã thực hiện điều này từ tia lửa đến MSSQL trong quá khứ bằng cách sử dụng tùy chọn kích thước hàng loạt và kích thước hàng loạt cũng thành công.
Có một cái gì đó tương tự có thể ở đây cho Postgres?
Thêm mã tôi đã thử và thời gian để chạy quy trình:
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()
Vì vậy, tôi đã thực hiện cách tiếp cận trên cho 10 triệu bản ghi và có 5 kết nối song song theo quy định numPartitions
và cũng đã thử kích thước lô 200k .
Tổng thời gian cần cho quá trình là 0: 14: 05.760926 (mười bốn phút và năm giây).
Có cách tiếp cận hiệu quả nào khác sẽ làm giảm thời gian không?
Điều gì sẽ là kích thước lô hiệu quả hoặc tối ưu tôi có thể sử dụng? Sẽ tăng kích thước lô của tôi làm công việc nhanh hơn? Hoặc mở nhiều kết nối tức là> 5 giúp tôi thực hiện quy trình nhanh hơn?
Trung bình 14 phút cho 10 triệu hồ sơ không phải là xấu , nhưng tìm kiếm những người ngoài kia đã làm điều này trước đây để giúp trả lời câu hỏi này.