sql >> Databasteknik >  >> RDS >> PostgreSQL

Infoga analytisk data från Spark till Postgres

För närvarande finns det ingen inbyggd implementering av att skriva RDD till något DBMS. Här är länkarna till relaterade diskussioner i Spark-användarlistan:ett , två

I allmänhet skulle det mest effektiva tillvägagångssättet vara följande:

  1. Verifiera antalet partitioner i RDD, det bör inte vara för lågt och för högt. 20-50 partitioner borde vara bra, om antalet är lägre - ring repartition med 20 partitioner, om högre - anrop coalesce till 50 partitioner
  2. Anropa mapPartition transformation, inuti den anropar funktionen för att infoga posterna i ditt DBMS med JDBC. I den här funktionen öppnar du anslutningen till din databas och använder kommandot COPY med detta API , det skulle tillåta dig att eliminera behovet av ett separat kommando för varje post - på så sätt skulle infogningen bearbetas mycket snabbare

På detta sätt skulle du infoga data i Postgres på ett parallellt sätt med upp till 50 parallella anslutningar (beror på din Spark-klusterstorlek och dess konfiguration). Hela tillvägagångssättet kan implementeras som en Java/Scala-funktion som accepterar RDD:n och anslutningssträngen



  1. Välj och redigera vertikala block i SQL Server Management Studio (SSMS) - SQL Server / TSQL självstudie del 9

  2. Problem med PDO bindParam

  3. Hur man ställer in en PostgreSQL-databas i Django

  4. Hur deklarerar man variabel och använder den i samma Oracle SQL-skript?