PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wstawianie danych analitycznych ze Sparka do Postgres

W tej chwili nie ma natywnej implementacji zapisu RDD do żadnego DBMS. Oto linki do powiązanych dyskusji na liście użytkowników Spark:jeden , dwa

Ogólnie rzecz biorąc, najbardziej wydajne podejście byłoby następujące:

  1. Zweryfikuj liczbę partycji w RDD, nie powinna być zbyt niska ani zbyt wysoka. 20-50 partycji powinno wystarczyć, jeśli liczba jest mniejsza - zadzwoń do repartition z 20 partycjami, jeśli wyższe - zadzwoń coalesce do 50 partycji
  2. Wywołaj mapPartition transformacji, wewnątrz niej wywołaj funkcję wstawiania rekordów do systemu DBMS za pomocą JDBC. W tej funkcji otwierasz połączenie z bazą danych i używasz polecenia COPY z ten interfejs API , pozwoliłoby to wyeliminować potrzebę oddzielnego polecenia dla każdego rekordu - w ten sposób wstawianie byłoby przetwarzane znacznie szybciej

W ten sposób możesz wstawić dane do Postgres w sposób równoległy, wykorzystując do 50 połączeń równoległych (w zależności od rozmiaru klastra Spark i jego konfiguracji). Całe podejście można zaimplementować jako funkcję Java/Scala akceptującą RDD i ciąg połączenia



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz dynamiczny zestaw kolumn z tabeli i uzyskaj sumę dla każdej z nich

  2. Liquibase + Postgresql + Spring Jpa :Problem z automatycznym przyrostem identyfikatora

  3. Atrybut zmiany nazwy PostgreSQL w polu jsonb

  4. zliczaj puste wpisy w kolumnie bazy danych w sposób RESTfull

  5. Agregacja wszystkich wartości spoza tej samej grupy