是否可以使用 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