Saat ini tidak ada implementasi asli penulisan RDD ke DBMS mana pun. Berikut adalah tautan ke diskusi terkait dalam daftar pengguna Spark:satu , dua
Secara umum, pendekatan yang paling efektif adalah sebagai berikut:
- Validasi jumlah partisi dalam RDD, tidak boleh terlalu rendah dan terlalu tinggi. 20-50 partisi seharusnya baik-baik saja, jika jumlahnya lebih rendah - panggil
repartition
dengan 20 partisi, jika lebih tinggi - panggilcoalesce
hingga 50 partisi - Panggil
mapPartition
transformasi, di dalamnya memanggil fungsi untuk memasukkan catatan ke DBMS Anda menggunakan JDBC. Dalam fungsi ini Anda membuka koneksi ke database Anda dan menggunakan perintah COPY dengan API ini , ini akan memungkinkan Anda untuk menghilangkan kebutuhan akan perintah terpisah untuk setiap record - dengan cara ini penyisipan akan diproses lebih cepat
Dengan cara ini Anda akan memasukkan data ke dalam Postgres secara paralel menggunakan hingga 50 koneksi paralel (tergantung pada ukuran cluster Spark Anda dan konfigurasinya). Seluruh pendekatan dapat diimplementasikan sebagai fungsi Java/Scala yang menerima RDD dan string koneksi