sql >> Base de Datos >  >> RDS >> PostgreSQL

Insertar datos analíticos de Spark a Postgres

Por el momento, no existe una implementación nativa para escribir el RDD en ningún DBMS. Aquí están los enlaces a las discusiones relacionadas en la lista de usuarios de Spark:uno , dos

En general, el enfoque de mayor rendimiento sería el siguiente:

  1. Valide el número de particiones en RDD, no debe ser demasiado bajo ni demasiado alto. 20-50 particiones deberían estar bien, si el número es más bajo, llame a repartition con 20 particiones, si es mayor - llame a coalesce hasta 50 particiones
  2. Llama a la mapPartition transformación, dentro de ella llame a la función para insertar los registros en su DBMS usando JDBC. En esta función, abre la conexión a su base de datos y usa el comando COPY con esta API , le permitiría eliminar la necesidad de un comando separado para cada registro; de esta forma, la inserción se procesaría mucho más rápido

De esta manera, insertaría los datos en Postgres de manera paralela utilizando hasta 50 conexiones paralelas (depende del tamaño de su clúster Spark y su configuración). Todo el enfoque podría implementarse como una función de Java/Scala que acepte el RDD y la cadena de conexión