Rumah > Java > Isu dengan postgreSQL, cuba menyambungkan PySpark pada Jupyter Notebook pada Docker

Isu dengan postgreSQL, cuba menyambungkan PySpark pada Jupyter Notebook pada Docker

王林
Lepaskan: 2024-02-11 20:00:11
ke hadapan
1499 orang telah melayarinya

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.

Kandungan soalan

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()
Salin selepas log masuk

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.

Penyelesaian

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan