So habe ich sbt mit Assembly verwendet, um alle meine Abhängigkeiten in einem einzigen Glas für meine Spark-Jobs zu packen. Ich habe mehrere Jobs, wo ich c3p0
verwendet, um Verbindungspool-Informationen einzurichten, diese auszustrahlen und dann foreachPartition
auf dem RDD zu verwenden, um dann eine Verbindung aufzunehmen und die Daten in die Datenbank einzufügen. In meinem sbt Build-Skript, schließe ichSpark JDBC-Treiber konnte nicht gefunden werden
"mysql" % "mysql-connector-java" % "5.1.33"
Dies ist der JDBC-Connector stellt sicher, dass mit dem Job verpackt werden. Alles funktioniert super.
So vor kurzem begann ich um mit SparkSQL spielen und erkennen, dass es viel einfacher ist, einfach einen Datenrahmen zu nehmen und es zu einer JDBC-Quelle mit den neuen Funktionen in 1.3.0
speichert Ich erhalte die folgende Ausnahme:
java.sql.SQLException: Nein für geeignet befundene Treiber jdbc: mysql: //some.domain.com/myschema user = user & password = Passwort bei java.sql.DriverManager.getConnection (DriverManager.java: 596) um java.sql.DriverManager.getConnection (Laufwerk rManager.java:233)
Als ich laufen diese lokal habe ich es um, indem
SPARK_CLASSPATH=/path/where/mysql-connector-is.jar
Letztlich ist zu wissen, was ich will, warum ist die Aufgabe nicht in der Lage das zu finden, Treiber, wenn es damit verpackt werden soll? Meine anderen Jobs hatten dieses Problem nie. Von dem, was ich sagen kann c3p0
und der Dataframe-Code beide verwenden Sie die java.sql.DriverManager
(die alles für Sie importiert von dem, was ich sagen kann importieren), so sollte es gut funktionieren ?? Wenn etwas verhindert, dass die Assembly-Methode funktioniert, was muss ich tun, damit dies funktioniert?
Wie Sie Ihre Jobs starten Sie? Haben Sie überprüft, ob Ihr assemblierter Jar den MySQL-Treiber enthält? –
Ich habe das Jar überprüft, es enthält den MySQL-Treiber. Ich starte meinen Job mit bin/spark-submit --class "com.mypackage.MyJob" --verbose funken: //place.where.this.exists.com: 7077 MyJob.jar –
Ich habe das gleiche Problem, auch versuchen in mysql speichern. Ist dir das jemals auf den Grund gegangen? – Marcin