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

Inserimento di dati analitici da Spark a Postgres

Al momento non esiste un'implementazione nativa della scrittura dell'RDD su alcun DBMS. Di seguito sono riportati i collegamenti alle discussioni correlate nell'elenco utenti Spark:uno , due

In generale, l'approccio più efficace sarebbe il seguente:

  1. Convalida il numero di partizioni in RDD, non dovrebbe essere né troppo basso né troppo alto. 20-50 partizioni dovrebbero andare bene, se il numero è inferiore - chiama repartition con 20 partizioni, se superiore - chiama coalesce fino a 50 partizioni
  2. Chiama la mapPartition trasformazione, al suo interno chiama la funzione per inserire i record nel tuo DBMS usando JDBC. In questa funzione apri la connessione al tuo database e usi il comando COPY con questa API , ti consentirebbe di eliminare la necessità di un comando separato per ogni record, in questo modo l'inserimento verrebbe elaborato molto più velocemente

In questo modo inseriresti i dati in Postgres in modo parallelo utilizzando fino a 50 connessioni parallele (dipende dalle dimensioni del tuo cluster Spark e dalla sua configurazione). L'intero approccio potrebbe essere implementato come una funzione Java/Scala che accetta l'RDD e la stringa di connessione