使用spark-jdbc时,postgresql-url中的数据库名称被神奇地更改为大写

问题描述 投票:0回答:1

我正在使用

spark-jdbc
连接到 postgresql,其 url 如下:
jdbc:postgresql://ip:port/testdb

然后,我收到错误

PSQLException: FATAL: database "TESTDB" does not exist
testdb
神奇地变成了大写
TESTDB
。 (我很确定网址中有小写的
testdb
)。

此外,我创建了一个大写数据库,例如

TESTDB_2
,并使url中的db_name与大写数据库匹配,例如
jdbc:postgresql://ip:port/TESTDB_2
,效果很好。

有人遇到过类似的问题吗?是否有某个参数导致此情况?

  • spark 版本:3.3.2
  • postgresql-版本:13.1

更新

由于是最简单的spark代码,所以一开始并没有考虑展示出来,scala代码如下:

spark
  .read
  .format("jdbc")
  .option(JDBCOptions.JDBC_DRIVER_CLASS, driver())
  .option(JDBCOptions.JDBC_TABLE_NAME, tableName)
  .option(JdbcConfig.USER_KEY, userName)
  .option(JdbcConfig.PASSWORD_KEY, password)
  // problem
  .option(JDBCOptions.JDBC_URL, url)
  // other option
  .option(JDBCOptions.JDBC_UPPER_BOUND, timeRange.endStr)
  .option(JDBCOptions.JDBC_LOWER_BOUND, timeRange.startStr)
  .option(JDBCOptions.JDBC_PARTITION_COLUMN, "c1")
  .option(JDBCOptions.JDBC_NUM_PARTITIONS, numPartitions)

更新

我通过docker安装了一个测试postgresql(相同版本),一切正常。这是由于 postgresql 中的某些设置造成的吗?

postgresql apache-spark jdbc
1个回答
0
投票

我的解决方案

经过一段时间的尝试,将依赖项更新为

42.2.14
后,效果很好。

详情

但是尝试中还是发现了一些奇怪的问题:

  1. 我在本地计算机上使用
    42.2.11
    。使用原始 JDBC 代码,可以连接到该数据库。
  2. 创建一个新的、版本一致的 postgres 数据库。也可以通过集群Spark连接,版本还是
    42.2.11
© www.soinside.com 2019 - 2024. All rights reserved.