在這里使用 Scala:
Val df = spark.read.format("jdbc").
option("url", "<host url>").
option("dbtable", "UPPERCASE_SCHEMA.table_name").
option("user", "postgres").
option("password", "<password>").
option("numPartitions", 50).
option("fetchsize", 20).
load()
我使用上述代碼呼叫的資料庫有很多模式,它們都是大寫字母(UPPERCASE_SCHEMA)。
無論我如何嘗試表示架構全部大寫,Spark 都會將其轉換為小寫字母,從而無法使用實際資料庫進行初始化。
我試過把它變成一個變數,并用多種語言明確表示它都是大寫的,等等,但沒有運氣。
有人知道解決方法嗎?
當我進入實際的資料庫(Postgres)并臨時將架構更改為全小寫時,它作業得非常好。
uj5u.com熱心網友回復:
嘗試設定spark.sql.caseSensitive為true(false默認)
spark.conf.set('spark.sql.caseSensitive', true)
您可以在源代碼中看到它的定義: https ://github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala# L833
此外,您可以在JDBCWriteSuite它如何影響 JDBC 連接器中看到:
https ://github.com/apache/spark/blob/ee95ec35b4f711fada4b62bc27281252850bb475/sql/core/src/test/scala/org/apache/spark/sql/jdbc /JDBCWriteSuite.scala
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516999.html
