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èmepy4jjavaerror: 调用 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 imagehttps://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!