我有一个通过 CloudFormation 预先构建的 RDS/PostgreSQL 数据库的 Glue/Connection,它可以通过getJDBCSink
API 在 Glue/Scala/Sparkshell 中正常工作,以将 DataFrame 写入该数据库。
但我还需要写到同一个数据库、普通 sql 等create index ...
。create table ...
我怎样才能在同一个 Glue/Spark shell 中转发那种语句?
我有一个通过 CloudFormation 预先构建的 RDS/PostgreSQL 数据库的 Glue/Connection,它可以通过getJDBCSink
API 在 Glue/Scala/Sparkshell 中正常工作,以将 DataFrame 写入该数据库。
但我还需要写到同一个数据库、普通 sql 等create index ...
。create table ...
我怎样才能在同一个 Glue/Spark shell 中转发那种语句?
在 python 中,您可以为 spark 胶水作业提供 pg8000 依赖项,然后通过使用 pg8000 建立与 RDS 的连接来运行 sql 命令。
在 scala 中,您可以直接建立 JDBC 连接,而无需任何外部库就驱动程序而言,postgres 驱动程序在 aws 胶水中可用。
您可以将连接创建为
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()
}
}
或关注此博客