问题
如果附加多个集群红移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驱动程序文档为您的集群选择正确的驱动程序。