【问题标题】:Is it possible writing down to RDS raw sql (PostgreSQL) using AWS/Glue/Spark shell?是否可以使用 AWS/Glue/Spark shell 写入 RDS raw sql (PostgreSQL)?
【发布时间】:2020-05-19 10:59:51
【问题描述】:

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

但我还需要写到同一个数据库,普通的 sql,如 create index ...create table ... 等。 如何在同一个 Glue/Spark shell 中转发此类语句?

【问题讨论】:

    标签: postgresql scala amazon-web-services aws-glue aws-glue-spark


    【解决方案1】:

    在 python 中,您可以为 spark 胶水作业提供 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

    【讨论】:

    • pg8000 是 python 不是 scala
    • 谢谢它的工作。不确定这是否是最好的方法,因为我希望以某种方式重新使用创建的连接而不是重复数据库参数
    猜你喜欢
    • 2021-03-14
    • 2022-12-19
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 2022-01-09
    • 2020-06-15
    相关资源
    最近更新 更多