Op dit moment is er geen native implementatie van het schrijven van de RDD naar een DBMS. Hier zijn de links naar de gerelateerde discussies in de Spark-gebruikerslijst:één , twee
In het algemeen zou de meest performante aanpak de volgende zijn:
- Valideer het aantal partities in RDD, het mag niet te laag en te hoog zijn. 20-50 partities zouden goed moeten zijn, als het aantal lager is - bel
repartition
met 20 partities, indien hoger - belcoalesce
tot 50 partities - Bel de
mapPartition
transformatie, binnenin roept u de functie aan om de records in uw DBMS in te voegen met behulp van JDBC. In deze functie opent u de verbinding met uw database en gebruikt u het COPY-commando met deze API , zou het u in staat stellen om de noodzaak voor een afzonderlijk commando voor elk record te elimineren - op deze manier zou de invoeging veel sneller worden verwerkt
Op deze manier zou u de gegevens op een parallelle manier in Postgres invoegen met maximaal 50 parallelle verbindingen (afhankelijk van uw Spark-clustergrootte en de configuratie ervan). De hele aanpak kan worden geïmplementeerd als een Java/Scala-functie die de RDD en de verbindingsreeks accepteert