Maison > Java > le corps du texte

Problème avec postgreSQL, tentative de connexion de PySpark sur Jupyter Notebook sur Docker

王林
Libérer: 2024-02-11 20:00:11
avant
1433 Les gens l'ont consulté

L'éditeur php Youzi a récemment reçu des commentaires d'utilisateurs indiquant qu'ils rencontraient des problèmes lors de l'utilisation de Jupyter Notebook sur Docker pour se connecter à PySpark. Le problème spécifique est que j'ai rencontré des problèmes liés à PostgreSQL lors du processus de connexion. En réponse à ce problème, nous vous fournirons des solutions et des étapes opérationnelles pour aider les utilisateurs à se connecter avec succès à PySpark et à résoudre le problème. Dans cet article, nous présenterons en détail comment utiliser Jupyter Notebook sur Docker pour se connecter à PySpark et fournirons des solutions à certains problèmes courants. Nous espérons que cela sera utile à tout le monde.

Contenu de la question

J'ai eu ce problème py4jjavaerror: 调用 o124.save 时发生错误。 :org.postgresql.util.psqlexception:与 localhost:5432 的连接被拒绝。检查主机名和端口是否正确,以及 postmaster 是否接受 tcp/ip 连接。 Lorsque j'exécute ce code pysark sur le notebook jupyter et que j'exécute tout à l'aide de docker, postgresql est installé sur ma machine locale (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()
Copier après la connexion

J'ai essayé de modifier postgresql.conf pour ajouter "listen_addresses = 'localhost'" et de modifier pg_hba.conf pour ajouter "host all all 0.0.0.0/0 md5" mais cela n'a pas fonctionné pour moi donc je ne sais pas quoi faire faire.

Solution

J'ai également résolu le problème de l'installation de PostgreSQL sur Docker (en utilisant cette image https://hub.docker .com/_/postgres/ pour créer un conteneur uniquement pour postgres) et en utilisant la commande dans le conteneur PySpark Créez un réseau entre le conteneur postgreSQL

docker网络创建my_network,

Cette commande est destinée au conteneur Postgres

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

Ceci est pour le conteneur Jupyter-pyspark

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal