PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inserindo dados analíticos do Spark para o Postgres


No momento, não há implementação nativa de escrever o RDD em nenhum SGBD. Aqui estão os links para as discussões relacionadas na lista de usuários do Spark:um , dois

Em geral, a abordagem com melhor desempenho seria a seguinte:
  1. Valide o número de partições no RDD, não deve ser muito baixo e nem muito alto. 20-50 partições devem estar bem, se o número for menor - chame repartition com 20 partições, se maior - chame coalesce para 50 partições
  2. Chame a mapPartition transformação, dentro dela chame a função para inserir os registros em seu DBMS usando JDBC. Nesta função você abre a conexão com seu banco de dados e usa o comando COPY com esta API , isso permitiria que você eliminasse a necessidade de um comando separado para cada registro - desta forma a inserção seria processada muito mais rápido

Dessa forma, você inseriria os dados no Postgres de maneira paralela utilizando até 50 conexões paralelas (depende do tamanho do cluster Spark e de sua configuração). Toda a abordagem pode ser implementada como uma função Java/Scala aceitando o RDD e a string de conexão