PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einfügen von Analysedaten aus Spark in Postgres

Im Moment gibt es keine native Implementierung zum Schreiben des RDD in ein DBMS. Hier sind die Links zu den verwandten Diskussionen in der Spark-Benutzerliste:eins , zwei

Im Allgemeinen wäre der leistungsstärkste Ansatz der folgende:

  1. Validieren Sie die Anzahl der Partitionen in RDD, sie sollte nicht zu niedrig und nicht zu hoch sein. 20-50 Partitionen sollten in Ordnung sein, wenn die Zahl niedriger ist - rufen Sie repartition auf mit 20 Partitionen, falls höher - rufen Sie coalesce auf bis 50 Partitionen
  2. Rufen Sie die mapPartition auf Transformation, rufen Sie darin die Funktion auf, um die Datensätze mit JDBC in Ihr DBMS einzufügen. In dieser Funktion öffnen Sie die Verbindung zu Ihrer Datenbank und verwenden den COPY-Befehl mit dieses API , würde es Ihnen ermöglichen, die Notwendigkeit eines separaten Befehls für jeden Datensatz zu beseitigen - auf diese Weise würde die Einfügung viel schneller verarbeitet werden

Auf diese Weise würden Sie die Daten parallel in Postgres einfügen, indem Sie bis zu 50 parallele Verbindungen verwenden (abhängig von der Größe Ihres Spark-Clusters und seiner Konfiguration). Der gesamte Ansatz könnte als Java/Scala-Funktion implementiert werden, die das RDD und die Verbindungszeichenfolge

akzeptiert