Ich benutze PySpark auf Spark 1.5 auf Cloudera YARN, mit Python 3.3 auf Centos 6 Maschinen. Die SQL Server-Instanz ist SQL Server Enterprise 64bit. Der SQL Server-Treiber ist unten aufgeführt; sqljdbc4.jar; und ich habe hinzugefügt, um meine BashrcPySpark 1.5 & MSSQL jdbc
export SPARK_CLASSPATH="/var/lib/spark/sqljdbc4.jar"
export PYSPARK_SUBMIT_ARGS="--conf spark.executor.extraClassPath="/var/lib/spark/sqljdbc4.jar" --driver-class-path="/var/lib/spark/sqljdbc4.jar" --jars="/var/lib/spark/sqljdbc4.jar" --master yarn --deploy-mode client"
Und ich kann Bestätigung sehen, wenn ich Funken starten, dass
SPARK_CLASSPATH was detected (set to '/var/lib/spark/sqljdbc4.jar')
ich einen Datenrahmen, die wie dieses Schema sieht
root
|-- daytetime: timestamp (nullable = true)
|-- ip: string (nullable = true)
|-- tech: string (nullable = true)
|-- th: string (nullable = true)
|-- car: string (nullable = true)
|-- min_dayte: timestamp (nullable = true)
|-- max_dayte: timestamp (nullable = true)
Ich habe Ich habe bereits eine leere Tabelle in meinem MS SQL Server mit dem Namen 'dbo.shaping' erstellt, wobei die 3 Zeitstempelspalten datetime2 (7) und die anderen nvarchar (50) sein werden.
Ich versuche, den Datenrahmen von PySpark zu exportieren diesen
properties = {"user": "<username>", "password": "<password>"}
df.write.format('jdbc').options(url='<IP>:1433/<dbname>', dbtable='dbo.shaping',driver="com.microsoft.sqlserver.jdbc.SQLServerDriver",properties=properties)
mit erhalte ich die folgenden Zurückverfolgungsfehler
Py4JError: An error occurred while calling o250.option. Trace:
py4j.Py4JException: Method option([class java.lang.String, class java.util.HashMap]) does not exist
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:333)
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:342)
at py4j.Gateway.invoke(Gateway.java:252)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:207)
at java.lang.Thread.run(Thread.java:744)
meine Methoden zumindest korrekt sind, und vielleicht wird dieser Fehler im Zusammenhang der zum Schreiben spezifische Art von Daten, dh ich habe ein Problem mit dem Datenkonstrukt und nicht mit meinem Code?
Sie eine Frage wieder zu beleben, die älter als ein Jahr ist. Haben Sie verifiziert, dass es immer noch relevant ist, wenn Sie gefragt werden (angesichts von Dingen wie neueren Versionen von Software)? –
Softwareaktualisierungen sind auf dieser Infra nicht möglich. Muss pyspark 1.5 Lösung sein. – PR102012
pyspark 1.5 ist eine Sache, aber der Microsoft JDBC-Treiber für SQL Server wurde ebenfalls aktualisiert. Ihr Fehler weist alle Kennzeichen eines Versionskonflikts zwischen Komponenten auf, es ist einfach nicht klar, welche. Ich empfehle, die Versionsnummern von allem, was Sie verwenden (python, pyspark, JDBC-Treiber, SQL Server, OS), explizit aufzulisten, sonst besteht wenig Hoffnung, dass jemand es reproduziert. (Deshalb bin ich auch skeptisch, dass dies "weit verbreitet für ein großes Publikum ist", aber ich habe keine Erfahrung mit pyspark.) –