我在Spark SQL文档中看到可以直接在远程PostgreSQL表上创建临时表。
CREATE TEMPORARY TABLE <table_name>
USING org.apache.spark.sql.jdbc
OPTIONS (
url "jdbc:postgresql://<PostgreSQL_Hostname_IP>/<database_name>",
dbtable "impressions"
);
当我在PostgreSQL服务器上运行时,出现以下错误。
Error: java.sql.SQLException: No suitable driver found for jdbc:postgresql://<PostgreSQL_Hostname_IP>/<database_name> (state=,code=0)
有人可以帮我理解为什么会这样吗?
谢谢, 本
答案 0 :(得分:0)
JDBC驱动程序将JDBC调用和SQL转换为特定于特定数据库服务器的代码。驱动程序调解数据交换,在SQL数据类型和Java类型之间进行转换。
您必须在运行时为您的Java应用程序提供JDBC Driver。您需要获取适当的驱动程序并将其放在classpath上的位置,以便JVM可以在需要时访问它。
您需要编辑该JDBC URL字符串以插入特定主机名/地址,特定数据库名称和特定数据库密码。
像Spark这样的项目不捆绑JDBC驱动程序。这样做不是他们的工作,并且维护所有数据库的所有驱动程序的所有版本的最新更新是不切实际的。
如果使用Servlet container,请注意JDBC驱动程序的特殊之处在于它们可能需要放在容器本身的文件夹中,而不是放在Web应用程序的文件夹中。常规图书馆。
对于Postgres,您可以选择驱动程序。
classic driver与旧版本的Java和Postgres兼容。该驱动程序是Postgres项目的官方部分。开源和免费。
pgjdbc-ng是“下一代”驱动程序,仅支持最新版本的Java和Postgres。开源和免费。
商业JDBC vendors也提供Postgres驱动程序。