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.
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()
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.
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!