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

fcg9iug3  于 2023-01-01  发布在  Spark
关注(0)|答案(1)|浏览(149)
    • bounty将在6天后过期**。回答此问题可获得+50声望奖励。Herwini希望引起更多人关注此问题。

我正在尝试使用docker容器中的pyspark连接到我的计算机localhost:5432上的postgres数据库。为此我使用了VS代码。VS代码自动构建和运行容器。以下是我的代码:

  1. password = ...
  2. user = ...
  3. url = 'jdbc:postgresql://127.0.0.1:5432/postgres'
  4. spark = SparkSession.builder.config("spark.jars","/opt/spark/jars/postgresql-42.2.5.jar") \
  5. .appName("PySpark_Postgres_test").getOrCreate()
  6. df = connector.read.format("jbdc") \
  7. .option("url", url) \
  8. .option("dbtable", 'chicago_crime') \
  9. .option("user", user) \
  10. .option("password", password) \
  11. .option("driver", "org.postgresql.Driver") \
  12. .load()

我总是得到相同的错误:
"调用o358.load时出错。\n:java.lang.ClassNotFoundException: \n找不到数据源:日巴发展中心.
您访问的网址不正确!

  1. url = 'jdbc:postgresql://127.0.0.1:5432/postgres'

该数据库位于端口5432上,名称为postgres。该数据库位于我的本地主机上,但由于我使用的是Docker容器,因此我认为正确的方法是输入便携式计算机的IP地址localhost127.0.0.1。如果键入localhost,它将引用Docker容器的本地主机。或者,我应该使用**IPv4地址 * * (无线局域网或wsl)。
有人知道出什么事了吗?
ps,我的dockerfile中的一个命令如下:

  1. RUN wget https://jdbc.postgresql.org/download/postgresql-42.2.5.jar -P /opt/spark/jars
uwopmtnx

uwopmtnx1#

  1. from pyspark.sql import SparkSession
  2. spark = SparkSession \
  3. .builder \
  4. .appName("Python Spark SQL basic example") \
  5. .config("spark.jars", "/opt/spark/jars/postgresql-42.2.5.jar") \
  6. .getOrCreate()
  7. df = spark.read \
  8. .format("jdbc") \
  9. .option("url", "jdbc:postgresql://host.docker.internal:5432/postgres") \
  10. .option("dbtable", "chicago_crime") \
  11. .option("user", "postgres") \
  12. .option("password", "postgres") \
  13. .option("driver", "org.postgresql.Driver") \
  14. .load()

相关问题