sql >> Database >  >> RDS >> PostgreSQL

Analytische gegevens van Spark in Postgres invoegen

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:

  1. 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 - bel coalesce tot 50 partities
  2. 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



  1. PHP PDO haalt null op

  2. hoe het databaseschema correct te specificeren in springboot?

  3. MySQL Connector voegt de enum toe met de waarde één minder dan de werkelijke

  4. postgresql:opsomming en karakter variërend, bijwerken