我得到了这个错误
py4j.protocol.Py4JJavaError: An error occurred while calling o38.jdbc. : java.lang.ClassNotFoundException: org.postgresql.Driver
Here is my docker-compose file
postgresdb:
image: postgres:13
ports:
- '5432:5432'
volumes:
- type: bind
source: ./data
target: /opt/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql # create table customer
environment:
POSTGRES_DB: db
POSTGRES_USER: test
POSTGRES_PASSWORD: test
And this is how I config in pyspark
jdbc_url = "jdbc:postgresql://localhost:5432/db"
connection_properties = {
"user": "test",
"password": "test",
"driver": "org.postgresql.Driver"
}
result.write.jdbc(url=jdbc_url, table="customers", mode="overwrite", properties=connection_properties)
我想知道如何解决这个问题。我需要在dockerfile中安装postgres13的jar文件吗?
1条答案
按热度按时间egmofgnx1#
看起来你还没有下载PostgreSQL JDBC驱动程序,请从Maven Central下载。现在使用下面的命令将这个文件夹放到Spark的jars目录中:
现在尝试下的代码来配置Spark,以便它开始使用您刚刚下载的驱动程序。
现在你可以使用你当前的代码写PostgreSQL了。尝试下的命令,但请使用稍后下载的JDBC驱动程序的实际版本更改。