I øjeblikket er der ingen indbygget implementering af at skrive RDD til nogen DBMS. Her er links til de relaterede diskussioner i Spark-brugerlisten:én , to
Generelt vil den mest effektive tilgang være følgende:
- Valider antallet af partitioner i RDD, det bør ikke være for lavt og for højt. 20-50 partitioner burde være fint, hvis antallet er lavere - ring til
repartition
med 20 partitioner, hvis højere - kaldcoalesce
til 50 partitioner - Kald
mapPartition
transformation, inde i det kalder funktionen til at indsætte posterne i dit DBMS ved hjælp af JDBC. I denne funktion åbner du forbindelsen til din database og bruger COPY-kommandoen med denne API , ville det give dig mulighed for at eliminere behovet for en separat kommando for hver post - på denne måde ville indsættelsen blive behandlet meget hurtigere
På denne måde vil du indsætte dataene i Postgres på en parallel måde ved at bruge op til 50 parallelle forbindelser (afhænger af din Spark-klyngestørrelse og dens konfiguration). Hele tilgangen kan implementeres som en Java/Scala-funktion, der accepterer RDD'en og forbindelsesstrengen