docker容器中的Pyspark postgresql数据库连接

Her*_*ini 2 postgresql docker apache-spark pyspark

我正在尝试使用 docker 容器内的 pyspark 连接到计算机的 localhost:5432 上的 postgres 数据库。为此,我使用 VS 代码。VS code 自动构建并运行容器。这是我的代码:

password = ...
user = ...
url = 'jdbc:postgresql://127.0.0.1:5432/postgres'

    
    spark = SparkSession.builder.config("spark.jars","/opt/spark/jars/postgresql-42.2.5.jar") \
        .appName("PySpark_Postgres_test").getOrCreate()
        
    
df = connector.read.format("jbdc") \
.option("url", url) \
    .option("dbtable", 'chicago_crime') \
        .option("user", user) \
            .option("password", password) \
                .option("driver", "org.postgresql.Driver") \
                    .load()
Run Code Online (Sandbox Code Playgroud)

我不断收到同样的错误:

“调用 o358.load 时发生错误。\n:java.lang.ClassNotFoundException:\n无法找到数据源:jbdc。...

也许网址不正确?

url = 'jdbc:postgresql://127.0.0.1:5432/postgres'
Run Code Online (Sandbox Code Playgroud)

该数据库位于端口5432上,名称为postgres。数据库位于我的本地主机上,但由于我在 docker 容器中工作,我认为正确的方法是输入笔记本电脑的 IP 地址 localhost 127.0.0.1。如果您输入localhost,它将引用您的 docker 容器的 localhost。或者我应该使用IPv4 地址(无线 LAN .. 或 wsl)。

任何人都知道出了什么问题吗?

ps,我的 dockerfile 中的命令之一如下:

RUN wget https://jdbc.postgresql.org/download/postgresql-42.2.5.jar -P /opt/spark/jars
Run Code Online (Sandbox Code Playgroud)

Her*_*ini 5

from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.jars", "/opt/spark/jars/postgresql-42.2.5.jar") \
    .getOrCreate()
    
df = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:postgresql://host.docker.internal:5432/postgres") \
    .option("dbtable", "chicago_crime") \
    .option("user", "postgres") \
    .option("password", "postgres") \
    .option("driver", "org.postgresql.Driver") \
    .load()
Run Code Online (Sandbox Code Playgroud)