V současné době neexistuje žádná nativní implementace zápisu RDD do žádné DBMS. Zde jsou odkazy na související diskuse v seznamu uživatelů Spark:jeden , dva
Obecně by nejvýkonnější přístup byl následující:
- Ověřte počet oddílů v RDD, neměl by být příliš nízký ani příliš vysoký. 20-50 oddílů by mělo být v pořádku, pokud je číslo nižší - zavolejte
repartition
s 20 oddíly, je-li vyšší - zavolejtecoalesce
až 50 oddílů - Zavolejte
mapPartition
transformace, uvnitř ní zavolejte funkci pro vložení záznamů do vašeho DBMS pomocí JDBC. V této funkci otevřete připojení k vaší databázi a použijete příkaz COPY s toto rozhraní API , umožnilo by vám to eliminovat potřebu samostatného příkazu pro každý záznam – tímto způsobem by bylo vkládání zpracováno mnohem rychleji
Tímto způsobem byste vložili data do Postgresu paralelně s využitím až 50 paralelních připojení (závisí na velikosti vašeho clusteru Spark a jeho konfiguraci). Celý přístup může být implementován jako Java/Scala funkce akceptující RDD a spojovací řetězec