sql >> Database teknologi >  >> RDS >> PostgreSQL

Indsættelse af analytiske data fra Spark til Postgres

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:

  1. 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 - kald coalesce til 50 partitioner
  2. 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



  1. Returnerer værdier fra MyBatis <insert> tilknyttede metoder

  2. Brug sæt i en case-sætning i SQL Server

  3. Hvordan får man adgang til strukturen og får kolonnelisten, datatyper af refcursor?

  4. Brug af et gemt datofelt til at beregne et felt, der beregner det aktuelle antal dage, der er gået