À l'aide de pyspark de se connecter à PostgreSQL
Je suis en train d'essayer de se connecter à une base de données avec pyspark et je suis en utilisant le code suivant:
sqlctx = SQLContext(sc)
df = sqlctx.load(
url = "jdbc:postgresql://[hostname]/[database]",
dbtable = "(SELECT * FROM talent LIMIT 1000) as blah",
password = "MichaelJordan",
user = "ScottyPippen",
source = "jdbc",
driver = "org.postgresql.Driver"
)
et j'obtiens l'erreur suivante:
Aucune idée pourquoi est-ce qui se passe?
Modifier: je suis en train d'exécuter le code en local sur mon ordinateur.
OriginalL'auteur Mpizos Dimitris | 2016-01-22
Vous devez vous connecter pour publier un commentaire.
La suite travaillé pour moi avec postgres sur localhost:
Télécharger le Pilote JDBC PostgreSQL à partir de https://jdbc.postgresql.org/download.html.
Pour la
pyspark
shell que vous utilisez leSPARK_CLASSPATH
variable d'environnement:Pour la présentation d'un script via
spark-submit
utiliser le--driver-class-path
drapeau:Dans le script python charger les tables comme un
DataFrame
comme suit:ou alternativement:
Noter que lors de la présentation du script via
spark-submit
, vous devez définir lessqlContext
.OriginalL'auteur mdh
Il est nécessaire de copier postgresql-42.1.4.jar dans tous les nœuds... pour mon cas, je l'ai copier dans le chemin d'accès /opt/spark-2.2.0-bin-hadoop2.7/pots de
Aussi, je set classpath dans ~/.bashrc (exportation SPARK_CLASSPATH="/opt/spark-2.2.0-bin-hadoop2.7/pots" )
et fonctionnent très bien dans pyspark console et jupyter
OriginalL'auteur Chevelle
Normalement, vous devez soit:
Si vous détail comment êtes-vous lancer pyspark, nous pouvons vous donner plus de détails.
Quelques indices/idées:
spark-ne-trouver-le-postgres-jdbc-pilote
Pas en mesure de se connecter à postgresql à l'aide de jdbc dans pyspark shell
Oui, vous en avez besoin. Parce que vous agissez en tant que Postgres client et vous êtes en précisant que vous allez utiliser Postgres pilote dans le "pilote = "org.postgresql.Pilote"," option. Vous pouvez l'enregistrer où vous voulez dans votre ordinateur local (par exemple jre\lib\ext de votre installation de java) et spécifier le chemin de stockage dans le CLASSPATH.
OriginalL'auteur MiguelPeralvo
Une approche, en s'appuyant sur l'exemple par la guide de démarrage rapide, est ce blog qui montre comment ajouter la
--packages org.postgresql:postgresql:9.4.1211
argument de laspark-submit
commande.Cette télécharge le pilote
into ~/.ivy2/jars
répertoire, dans mon cas/Users/derekhill/.ivy2/jars/org.postgresql_postgresql-9.4.1211.jar
. En passant ce que le--driver-class-path
option donne le plein étincelle soumettre commande de:Et dans
main.py
:OriginalL'auteur Derek Hill
Cette exception signifie que le pilote jdbc n'est pas dans le pilote de classpath.
vous pouvez étincelle soumettre jdbc pots avec
--jar
paramètre, aussi l'ajouter dans le pilote de chemin de classe à l'aide despark.driver.extraClassPath
.OriginalL'auteur Shawn Guo