Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Die Big Data Cluster von Microsoft SQL Server 2019 werden eingestellt. Der Support für SQL Server 2019 Big Data Cluster endete am 28. Februar 2025. Weitere Informationen finden Sie im Ankündigungsblogbeitrag und den Big Data-Optionen auf der Microsoft SQL Server-Plattform.
Der Apache Spark Connector für SQL Server und Azure SQL ist ein leistungsstarker Connector, mit dem Sie Transaktionsdaten in Big Data Analytics verwenden und Ergebnisse für Ad-hoc-Abfragen oder Berichte speichern können. Mit dem Connector können Sie jede SQL-Datenbank, lokal oder in der Cloud als Eingabedatenquelle oder Ausgabedatensenke für Spark-Aufträge verwenden. Der Connector verwendet SQL Server-APIs für Massenschreibvorgänge. Benutzer können beliebige Bündelschreibparameter als optionale Parameter übergeben, und der Connector gibt sie as-is an die zugrunde liegende API weiter. Weitere Informationen zu Massen-Schreibvorgängen finden Sie unter Verwenden von Massenkopieren mit dem JDBC-Treiber.
Der Connector ist standardmäßig in SQL Server Big Data Clusters enthalten.
Erfahren Sie mehr über den Connector im Open Source-Repository. Beispiele finden Sie unter Beispiele.
Schreiben in eine neue SQL-Tabelle
Caution
Im overwrite Modus löscht der Verbinder die Tabelle zuerst, wenn sie in der Datenbank bereits standardmäßig vorhanden ist. Verwenden Sie diese Option mit bedachter Sorgfalt, um unerwartete Datenverluste zu vermeiden.
Wenn Sie den Modus overwrite verwenden und die Option truncate nicht nutzen, gehen bei der erneuten Erstellung der Tabelle Indizes verloren. Beispielsweise wird eine Columnstore-Tabelle in einen Heap umgewandelt. Wenn Sie die vorhandene Indizierung beibehalten möchten, geben Sie auch die Option truncate mit dem Wert truean. Beispiel: .option("truncate",true)
server_name = "jdbc:sqlserver://{SERVER_ADDR}"
database_name = "database_name"
url = server_name + ";" + "databaseName=" + database_name + ";"
table_name = "table_name"
username = "username"
password = "password123!#" # Please specify password here
try:
df.write \
.format("com.microsoft.sqlserver.jdbc.spark") \
.mode("overwrite") \
.option("url", url) \
.option("dbtable", table_name) \
.option("user", username) \
.option("password", password) \
.save()
except ValueError as error :
print("Connector write failed", error)
Daten zu einer SQL-Tabelle hinzufügen
try:
df.write \
.format("com.microsoft.sqlserver.jdbc.spark") \
.mode("append") \
.option("url", url) \
.option("dbtable", table_name) \
.option("user", username) \
.option("password", password) \
.save()
except ValueError as error :
print("Connector write failed", error)
Angeben der Isolationsstufe
Dieser Connector verwendet standardmäßig die Isolationsebene READ_COMMITTED beim Ausführen der Masseneinfügung in die Datenbank. Wenn Sie dies auf eine andere Isolationsstufe überschreiben möchten, verwenden Sie die mssqlIsolationLevel Option wie unten dargestellt.
.option("mssqlIsolationLevel", "READ_UNCOMMITTED") \
Aus SQL-Tabelle lesen
jdbcDF = spark.read \
.format("com.microsoft.sqlserver.jdbc.spark") \
.option("url", url) \
.option("dbtable", table_name) \
.option("user", username) \
.option("password", password).load()
Nicht-Active-Directory-Modus
Im Nicht-Active Directory-Modus verfügt jeder Benutzer über einen Benutzernamen und ein Kennwort, das während der Connectorinstanziierung als Parameter angegeben werden muss, um Lese- und/oder Schreibvorgänge auszuführen.
Nachfolgend finden Sie ein Beispiel für die Connectorinstanziierung für den Nicht-Active Directory-Modus. Bevor Sie das Skript ausführen, ersetzen Sie den ? Wert durch den Wert für Ihr Konto.
# Note: '?' is a placeholder for a necessary user-specified value
connector_type = "com.microsoft.sqlserver.jdbc.spark"
url = "jdbc:sqlserver://master-p-svc;databaseName=?;"
writer = df.write \
.format(connector_type)\
.mode("overwrite")
.option("url", url) \
.option("user", ?) \
.option("password",?)
writer.save()
Active Directory-Modus
Im Active Directory-Modus muss der Benutzer nach dem Erzeugen einer keytab-Datei die principal und keytab als Parameter während der Connectorinstanziierung angeben.
In diesem Modus lädt der Treiber die Keytabdatei in die entsprechenden Executorcontainer. Anschließend verwenden die Executoren den Prinzipalnamen und das Keytab, um ein Token zu generieren, das zum Erstellen eines JDBC-Connectors für Lese-/Schreibzugriff verwendet wird.
Nachfolgend finden Sie ein Beispiel für die Connectorinstanziierung für den Active Directory-Modus. Bevor Sie das Skript ausführen, ersetzen Sie den ? Wert durch den Wert für Ihr Konto.
# Note: '?' is a placeholder for a necessary user-specified value
connector_type = "com.microsoft.sqlserver.jdbc.spark"
url = "jdbc:sqlserver://master-p-svc;databaseName=?;integratedSecurity=true;authenticationScheme=JavaKerberos;"
writer = df.write \
.format(connector_type)\
.mode("overwrite")
.option("url", url) \
.option("principal", ?) \
.option("keytab", ?)
writer.save()
Next steps
Weitere Informationen zu Big Data-Cluster finden Sie unter Vorgehensweise: Bereitstellen von Big Data-Cluster für SQL Server auf Kubernetes.
Haben Sie Feedback- oder Featureempfehlungen für SQL Server Big Data Cluster? Hinterlassen Sie uns eine Notiz bei SQL Server Big Data Cluster Feedback.