紅移JDBC驅動程序的衝突問題

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

寫的亞當Pavlacka

去年發表在:2022年6月1日

問題

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

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

導致

磚運行時不包括一個紅移的JDBC驅動程序。如果您使用的是紅移,必須附上正確的司機您的集群。如果附加多個紅移JDBC驅動程序到一個集群他們可能不兼容,導致掛起或崩潰。

例如,下麵的紅移JDBC jar是不相容的:

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

如果你把這兩個相同的集群SQLDriverWrapper則會顯示錯誤消息,當你試圖訪問紅移。

解決方案

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