【问题标题】:Spark doesn't respect the case sensitivity of tableSpark不尊重表格的大小写敏感
【发布时间】:2018-01-26 13:22:20
【问题描述】:

我在 spark scala 中遇到了区分大小写的问题。 我想从包含一些字符(大写)的 postgres 表中读取,但默认情况下 spark 将名称转换为小写,我收到错误

org.postgresql.util.PSQLException: 错误: 关系“textlogs”不存在

val opts = Map(
  "url" -> "jdbc:postgresql://localhost:5433/sparkdb",
  "dbtable" -> "TextLogs",
  "user" -> "admin",
  "password" -> "mypassword"
)
val df = spark
           .read
           .format("jdbc")
           .options(opts)
           .load

有没有办法强制 spark 尊重大小写?

【问题讨论】:

    标签: postgresql scala apache-spark apache-spark-sql


    【解决方案1】:

    在 Postgres 中,当您不使用双引号对象标识符(如表名)时,它们将被视为不区分大小写。所以这个TextLogs实际上等于textlogs。

    为了有区分大小写的对象标识符,您需要双引号。在你的情况下,那将是"TextLogs",所以在你的代码中你应该在表名中添加转义的双引号:

    val opts = Map(
      "url" -> "jdbc:postgresql://localhost:5433/sparkdb",
      "dbtable" -> "\"TextLogs\"",
      "user" -> "admin",
      "password" -> "mypassword"
    )
    val df = spark
               .read
               .format("jdbc")
               .options(opts)
               .load
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 2011-10-11
      • 2017-02-21
      • 2021-12-21
      • 2011-01-22
      • 1970-01-01
      相关资源
      最近更新 更多