0

我有一个通过 CloudFormation 预先构建的 RDS/PostgreSQL 数据库的 Glue/Connection,它可以通过getJDBCSinkAPI 在 Glue/Scala/Sparkshell 中正常工作,以将 DataFrame 写入该数据库。

但我还需要写到同一个数据库、普通 sql 等create index ...create table ...我怎样才能在同一个 Glue/Spark shell 中转发那种语句?

4

1 回答 1

0

在 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()
  }
}

或关注此博客

于 2020-05-19T12:09:00.643 回答