editor php Youzi baru-baru ini menerima maklum balas daripada pengguna bahawa mereka menghadapi masalah semasa menggunakan Jupyter Notebook di Docker untuk menyambung ke PySpark. Masalah khusus ialah saya menghadapi beberapa masalah yang berkaitan dengan PostgreSQL semasa proses sambungan. Sebagai tindak balas kepada masalah ini, kami akan memberikan anda penyelesaian dan langkah operasi untuk membantu pengguna berjaya menyambung ke PySpark dan menyelesaikan masalah tersebut. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara menggunakan Jupyter Notebook pada Docker untuk menyambung ke PySpark, dan memberikan penyelesaian kepada beberapa masalah biasa Kami berharap ia akan membantu semua orang.
Saya mengalami masalah ini py4jjavaerror: 调用 o124.save 时发生错误。 :org.postgresql.util.psqlexception:与 localhost:5432 的连接被拒绝。检查主机名和端口是否正确,以及 postmaster 是否接受 tcp/ip 连接。
Apabila saya menjalankan kod pysark ini pada notebook jupyter dan menjalankan semuanya menggunakan docker, postgresql akan dipasang dalam mesin tempatan saya (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()
Saya cuba mengedit postgresql.conf untuk menambah "listen_addresses = 'localhost'" dan mengedit pg_hba.conf untuk menambah "host all all 0.0.0.0/0 md5" tetapi ia tidak berkesan untuk saya jadi saya tidak tahu apa yang perlu buat.
Saya juga menyelesaikan masalah memasang PostgreSQL pada docker (menggunakan imej ini https://hub.docker .com/_/postgres/ untuk mencipta bekas hanya untuk postgres) dan menggunakan arahan dalam bekas PySpark Buat rangkaian antara bekas postgreSQL
docker网络创建my_network
,
Arahan ini adalah untuk bekas postgres
docker run --name postgres_container --network my_network -e POSTGRES_PASSWORD=12345 -d -p 5432:5432 postgres:latest
Ini untuk bekas Jupyter-pyspark
docker run --name jupyter_container --network my_network -it -p 8888:8888 -v C:homeworkpath:/home/jovyan/work jupyter/pyspark-notebook:latest
Atas ialah kandungan terperinci Isu dengan postgreSQL, cuba menyambungkan PySpark pada Jupyter Notebook pada Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!