Wie eine Verbindung zu Amazon Redshift oder andere DB ' s in Apache Spark?
Ich versuche, die Verbindung zu Amazon Redshift über die Funke, damit ich beitreten kann, Daten, die wir haben auf S3 mit Daten über den RS-cluster. Ich fand einige sehr spartanische Dokumentation hier für die Fähigkeit der Verbindung zu JDBC:
https://spark.apache.org/docs/1.3.1/sql-programming-guide.html#jdbc-to-other-databases
Dem load-Befehl scheint ziemlich einfach (obwohl ich nicht weiß, wie ich den eingeben für AWS-Anmeldeinformationen hier, vielleicht in den Optionen?).
df = sqlContext.load(source="jdbc", url="jdbc:postgresql:dbserver", dbtable="schema.tablename")
Und ich bin mir nicht ganz sicher, wie man mit der SPARK_CLASSPATH variable. Ich bin mit Spark lokal für jetzt durch eine iPython-notebook (als Teil der Funke-Verteilung). Wo definiere ich, dass so der Funke geladen?
Sowieso, denn wenn ich jetzt versuche, die folgenden Befehle ausführen, bekomme ich einen Haufen Fehler nicht mehr zu entziffern, so bin ich irgendwie stecken jetzt. Jede Hilfe oder Verweise auf ausführliche tutorials, die sind geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl dies scheint eine sehr alte post, wer ist noch auf der Suche nach Antwort, unten die Schritte für mich gearbeitet!
Starten der shell, einschließlich die jar.
Erstellen df, indem Sie die entsprechenden details:
Spark Version: 2.2
Es stellt sich heraus, Sie müssen nur einen Benutzernamen/pwd zugreifen Rotverschiebung in der Funke, und es wird getan, wie folgt (mit Hilfe der Python-API):
Hoffe, das jemand hilft!
Scala
?Wenn Sie der Verwendung von Spark-Version 1.4.0 oder neuer, check-out
spark-redshift
, eine Bibliothek, die unterstützt laden von Daten aus der Rotverschiebung in Spark SQL DataFrames und speichern DataFrames zurück zu Rotverschiebung. Wenn Sie das Abfragen von großen Datenmengen, dieser Ansatz sollte performanter als JDBC, da es in der Lage zu entladen und die Abfrage der Daten parallel.Wenn Sie noch verwenden möchten, JDBC, schauen Sie sich die neue built-in-JDBC-Datenquelle in Spark 1.4+.
Offenlegung: ich bin einer der Autoren von
spark-redshift
.spark-redshift
wird nicht mehr gewartet öffentlich. Databricks hat entschieden, dass ein ausschließlich privater und nicht veröffentlichen alle weiteren updates, die außerhalb Ihres Clusters Bilder. Siehe die Antwort von @Sumit für eine aktuelle Methode mit der Postgres-Treiber.Als erstes müssen Sie downloaden Postgres-JDBC-Treiber. Sie können es hier finden: https://jdbc.postgresql.org/
Können Sie entweder definieren Sie Ihre Umgebungsvariable SPARK_CLASSPATH in
.bashrc
, conf/spark-env.sh oder einer ähnlichen Datei, oder geben Sie es in das Skript vor dem ausführen Ihre IPython notebook.Können Sie auch definieren es in Ihrem conf/Funke-defaults.conf in der folgenden Art und Weise:
Stellen Sie sicher, es spiegelt sich in der Registerkarte "Umgebung" Ihrer Spark-WebUI.
Müssen Sie auch die entsprechenden AWS-Anmeldeinformationen, die in der folgenden Weise:
sc._jsc
. HTH