Можно ли записать в RDS raw sql (PostgreSQL) с помощью оболочки AWS/Glue/Spark?

У меня есть клей / соединение для базы данных RDS/PostgreSQL, предварительно созданной с помощью CloudFormation, которая отлично работает в Glue/Scala/Sparkshell через getJDBCSink API для записи DataFrame в эту БД.

Но также мне нужно записать в тот же db, простой sql, например create index ... или create table ... и т. д. Как я могу пересылать подобные утверждения в той же оболочке Glue/Spark?

1 ответ

Решение

В python вы можете обеспечить зависимость pg8000 для заданий искрового клея, а затем запустить команды sql, установив соединение с RDS с помощью pg8000.

В scala вы можете напрямую установить соединение JDBC без необходимости использования какой-либо внешней библиотеки, что касается драйвера, драйвер postgres доступен в aws glue.

Вы можете создать соединение как

import java.sql.{Connection, DriverManager, ResultSet}

object pgconn extends App {
  println("Postgres connector")

  classOf[org.postgresql.Driver]
  val con_st = "jdbc:postgresql://localhost:5432/DB_NAME?user=DB_USER"
  val conn = DriverManager.getConnection(con_str)
  try {
    val stm = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)

    val rs = stm.executeQuery("SELECT * from Users")

    while(rs.next) {
      println(rs.getString("quote"))
    }
 } finally {
     conn.close()
  }
}

или подпишитесь на этот блог

Другие вопросы по тегам