Redshift JDBC驅動程序衝突問題

學習如何解決Redshift JDBC SQLDriverWrapper驅動程序衝突。

寫的亞當Pavlacka

最後發布時間:2022年6月1日

問題

如果將多個Redshift JDBC驅動程序附加到一個集群,並使用Redshift連接器,那麼筆記本REPL可能會掛起或崩潰SQLDriverWrapper錯誤消息。

在ReplId-9d455-9b970-b2042 java.lang.NoSuchFieldError: PG_SUBPROTOCOL_NAMES at com.amazon.redshift.jdbc.Driver中拋出致命的非用戶錯誤。getSubProtocols(未知來源)在com.amazon.redshift.jdbc.Driver。acceptsSubProtocol(未知來源)at com.amazon.jdbc.common.BaseConnectionFactory.acceptsURL(未知來源)at com.amazon.jdbc.common.AbstractDriver.connect(未知來源)at org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper.connect(DriverWrapper.scala:45) at com.databricks.spark.redshift.JDBCWrapper.getConnector(RedshiftJDBCWrapper.scala:355) at com.databricks.spark.redshift.JDBCWrapper.getConnector(RedshiftJDBCWrapper.scala:376) atcom.databricks.spark.redshift.RedshiftRelation anonfun模式美元1.美元(RedshiftRelation.scala: 75)應用com.databricks.spark.redshift.RedshiftRelation anonfun模式美元1.美元申請(RedshiftRelation.scala: 72)

導致

Databricks運行時不包含Redshift JDBC驅動程序。如果您正在使用Redshift,則必須將正確的驅動程序附加到集群。如果將多個Redshift JDBC驅動程序附加到單個集群,它們可能不兼容,從而導致掛起或崩潰。

例如,以下Redshift JDBC jar是不兼容的:

  • RedshiftJDBC41-1.1.7.1007.jar
  • RedshiftJDBC42-no-awssdk-1.2.20.1043.jar

如果將它們都附加到同一個集群,則SQLDriverWrapper當你嚐試訪問Redshift時,會出現錯誤信息。

解決方案

你隻應該有一個紅移JDBC驅動程序附加到集群的。檢查Redshift JDBC驅動程序文檔為您的集群選擇正確的驅動程序。