Можно ли записать в 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()
}
}
или подпишитесь на этот блог