首頁  >  文章  >  postgreSQL 出現問題,嘗試在 Docker 上的 Jupyter Notebook 上連接 PySpark

postgreSQL 出現問題,嘗試在 Docker 上的 Jupyter Notebook 上連接 PySpark

王林
王林轉載
2024-02-11 20:00:111328瀏覽

php小編柚子最近接到用戶回饋,表示在使用Docker上的Jupyter Notebook連接PySpark時遇到了問題。具體問題是在連接的過程中遇到了一些與PostgreSQL相關的困擾。針對這個問題,我們將為大家提供解決方案和操作步驟,以幫助使用者順利連接PySpark並解決問題。在本文中,我們將詳細介紹如何使用Docker上的Jupyter Notebook連接PySpark,並提供一些常見問題的解決方法,希望能對大家有所幫助。

問題內容

我遇到了這個問題 py4jjavaerror: 呼叫 o124.save 時發生錯誤。 :org.postgresql.util.psqlexception:與 localhost:5432 的連線被拒絕。檢查主機名稱和連接埠是否正確,以及 postmaster 是否接受 tcp/ip 連線。 當我在 jupyter notbook 上運行此 pysark 程式碼並使用 docker 運行所有內容時,postgresql 將安裝在本機電腦(windows)中。

from pyspark.sql import SparkSession
from pyspark.sql.functions import lit, col, explode
import pyspark.sql.functions as f

spark = SparkSession.builder.appName("ETL Pipeline").config("spark.jars", "./postgresql-42.7.1.jar").getOrCreate()
df = spark.read.text("./Data/WordData.txt")

df2 = df.withColumn("splitedData", f.split("value"," "))
df3 = df2.withColumn("words", explode("splitedData"))
wordsDF = df3.select("words")
wordCount = wordsDF.groupBy("words").count()

driver = "org.postgresql.Driver"
url = "jdbc:postgresql://localhost:5432/local_database"
table = "word_count"
user = "postgres"
password = "12345"

wordCount.write.format("jdbc") \
    .option("driver", driver) \
    .option("url", url) \
    .option("dbtable", table) \
    .option("mode", "append") \
    .option("user", user) \
    .option("password", password) \
    .save()

spark.stop()

我嘗試編輯postgresql.conf 添加“listen_addresses = 'localhost'”並編輯pg_hba.conf 添加“host all all 0.0.0.0/0 md5”,但它對我不起作用,所以我不知道該怎麼做做。

解決方法

我也解決了在docker 上安裝PostgreSQL 的問題(使用此映像https://hub.docker .com/_/postgres/ 僅為postgres 建立一個容器)並使用指令在PySpark 容器和postgreSQL 容器之間建立網路

docker網路建立my_network

此指令用於 postgres 容器

docker run --name postgres_container --network my_network -e POSTGRES_PASSWORD=12345 -d -p 5432:5432 postgres:latest

這個用於 Jupyter-pyspark 容器

docker run --name jupyter_container --network my_network -it -p 8888:8888 -v C:\home\work\path:/home/jovyan/work jupyter/pyspark-notebook:latest

以上是postgreSQL 出現問題,嘗試在 Docker 上的 Jupyter Notebook 上連接 PySpark的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除