是否可以使用 AWS/Glue/Spark shell 写入 RDS raw sql (PostgreSQL)?
Is it possible writing down to RDS raw sql (PostgreSQL) using AWS/Glue/Spark shell?
我有一个 Glue/Connection 用于通过 CloudFormation 预构建的 RDS/PostgreSQL 数据库,它在 Glue/Scala/Sparkshell 通过 getJDBCSink
API 写入将 DataFrame 下载到该数据库。
但我也需要写到同一个数据库,普通 sql 像 create index ...
或 create table ...
等。
我怎样才能在同一个 Glue/Spark shell?
中转发此类语句
在 python 中,您可以为 spark glue 作业提供 pg8000 依赖性,然后通过使用 pg8000 建立与 RDS 的连接来 运行 sql 命令。
在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()
}
}
或关注此blog
我有一个 Glue/Connection 用于通过 CloudFormation 预构建的 RDS/PostgreSQL 数据库,它在 Glue/Scala/Sparkshell 通过 getJDBCSink
API 写入将 DataFrame 下载到该数据库。
但我也需要写到同一个数据库,普通 sql 像 create index ...
或 create table ...
等。
我怎样才能在同一个 Glue/Spark shell?
在 python 中,您可以为 spark glue 作业提供 pg8000 依赖性,然后通过使用 pg8000 建立与 RDS 的连接来 运行 sql 命令。
在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()
}
}
或关注此blog