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中文網其他相關文章!