Tại thời điểm này, không có triển khai gốc nào của việc ghi RDD vào bất kỳ DBMS nào. Dưới đây là các liên kết đến các cuộc thảo luận liên quan trong danh sách người dùng Spark: một , hai
Nói chung, cách tiếp cận hiệu quả nhất sẽ là:
- Xác thực số lượng phân vùng trong RDD, nó không được quá thấp và quá cao. 20-50 phân vùng sẽ ổn, nếu số lượng thấp hơn - hãy gọi
repartition
với 20 phân vùng, nếu cao hơn - hãy gọicoalesce
đến 50 phân vùng - Gọi
mapPartition
chuyển đổi, bên trong nó gọi hàm để chèn các bản ghi vào DBMS của bạn bằng cách sử dụng JDBC. Trong hàm này, bạn mở kết nối với cơ sở dữ liệu của mình và sử dụng lệnh COPY với API này , nó sẽ cho phép bạn loại bỏ sự cần thiết phải có một lệnh riêng biệt cho mỗi bản ghi - theo cách này, việc chèn sẽ được xử lý nhanh hơn nhiều
Bằng cách này, bạn sẽ chèn dữ liệu vào Postgres theo cách song song sử dụng tối đa 50 kết nối song song (phụ thuộc vào kích thước cụm Spark của bạn và cấu hình của nó). Toàn bộ cách tiếp cận có thể được triển khai dưới dạng một hàm Java / Scala chấp nhận RDD và chuỗi kết nối