Py4JJavaError: java.lang.ClassNotFoundException: org.postgre



我正在尝试将spark数据框加载到postgresql表中,我已经将最新的postgresql jdbc驱动程序添加到spark中。但我仍然得到错误

Py4JJavaError: An error occurred while calling o80.save.
: java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)

这是我的代码:

spark = SparkSession 
.builder 
.appName("Python Spark Purple Air") 
.master("local") 
.config("spark.jars", "/<location-jar-file>/postgresql-42.5.1.jar") 
.getOrCreate()
list_df.select("api_version","data_time_stamp","sensor", "time_stamp").write.mode("overwrite").format("jdbc")
.option("url", "jdbc:postgresql://localhost:5432/purpleair_data") 
.option("driver", "org.postgresql.Driver").option("dbtable", "purpleair") 
.option("user", "postgres").option("password", "xxx").save()

我确实找到了多个相关的堆栈溢出链接,但当jar文件配置为spark时,所有这些链接最终都得到了解决。罐子,这是我所做的,但它似乎仍然不起作用。我已经在conda环境中安装了pyspark,并在jupyter笔记本中运行此代码。任何形式的帮助或解决方法都将真正帮助我。

我用spark.jar .packages (org.postgresql:postgresql:42.5.1)解决了同样的问题。):

with spark (pyspark):

self.spark_jars_packages = "com.amazonaws:aws-java-sdk:1.12.246,org.apache.hadoop:hadoop-aws:3.2.3,io.delta:delta-core_2.12:2.0.0,org.postgresql:postgresql:42.5.1"
self.spark = (SparkSession.builder.master("local[*]")
appName("test-spark")
**.config("spark.jars.packages", self.spark_jars_packages)**

与三角洲:

self.packages = [
"com.amazonaws:aws-java-sdk:1.12.246,org.apache.hadoop:hadoop-aws:3.3.1,io.delta:delta-core_2.12:2.2.0,org.postgresql:postgresql:42.5.1"]
self.spark = configure_spark_with_delta_pip(
self.builder, extra_packages=self.packages).getOrCreate()

相关内容

最新更新