Verwenden des Apache Spark-Connectors für SQL Server und Azure SQL, um aus Spark in SQL Server zu lesen und zu schreibenHow to read and write to SQL Server from Spark using the Apache Spark Connector for SQL Server and Azure SQL

Ein sehr wichtiges Muster für die Big Data-Nutzung ist die Verarbeitung großer Datenvolumen in Spark und das anschließende Schreiben der Daten in SQL Server, damit Branchenanwendungen darauf zugreifen können.A key big data usage pattern is high volume data processing in Spark, followed by writing the data to SQL Server for access to line-of-business applications. Diese Nutzungsmuster profitieren von einem Connector, der wichtige SQL-Optimierungen nutzt und einen effizienten Schreibmechanismus bereitstellt.These usage patterns benefit from a connector that utilizes key SQL optimizations and provides an efficient write mechanism.

Dieser Artikel bietet eine Übersicht über die Schnittstelle des Apache Spark-Connectors für SQL Server und Azure SQL und ihrer Instanziierung zur Verwendung mit dem AD-Modus und dem Modus ohne AD.This article provides an overview of the Apache Spark Connector for SQL Server and Azure SQL interface and instantiating it for use with non-AD mode and AD-mode. Anschließend wird ein Beispiel zur Verwendung des Apache Spark-Connectors für SQL Server und Azure SQL zum Lesen und Schreiben in den folgenden Speicherorten in einem Big Data-Cluster veranschaulicht:Then, provides an example of how to use the Apache Spark Connector for SQL Server and Azure SQL to read and write to the following locations within a big data cluster:

  1. SQL Server-MasterinstanzThe SQL Server master instance

  2. SQL Server-DatenpoolThe SQL Server data pool

    Diagramm: Apache Spark-Connector für SQL Server und Azure SQL

Schnittstelle für den Apache Spark-Connector für SQL Server und Azure SQLApache Spark Connector for SQL Server and Azure SQL Interface

SQL Server 2019 stellt den Apache Spark-Connector für SQL Server und Azure SQL für Big Data-Cluster bereit, der SQL Server-APIs für Massenschreibvorgänge zum Schreiben für Spark in SQL verwendet.SQL Server 2019 provides the Apache Spark Connector for SQL Server and Azure SQL for big data clusters that uses SQL Server bulk write APIs for Spark to SQL writes. Der Apache Spark-Connector für SQL Server und Azure SQL basiert auf Datenquellen-APIs von Spark und stellt eine bekannte Spark-JDBC-Connectorschnittstelle bereit.The Apache Spark Connector for SQL Server and Azure SQL is based on Spark data source APIs and provides a familiar Spark JDBC connector interface. Informationen zu den Parametern der Schnittstelle finden Sie in der Apache Spark-Dokumentation.For interface parameters refer Apache Spark documentation. Zum Verweisen auf den Apache Spark-Connector für SQL Server und Azure SQL wird der Name com.microsoft.sqlserver.jdbc.spark verwendet.The Apache Spark Connector for SQL Server and Azure SQL is referenced by the name com.microsoft.sqlserver.jdbc.spark. Der Apache Spark-Connector für SQL Server und Azure SQL unterstützt zwei Sicherheitsmodi zum Herstellen einer Verbindung mit SQL Server, den Modus ohne Active Directory und den Active Directory-Modus:The Apache Spark Connector for SQL Server and Azure SQL supports two security modes to connect with SQL Server, non-Active Directory mode and Active Directory(AD)-mode:

Modus ohne AD:Non-AD Mode:

Im Sicherheitsmodus ohne AD verfügt jeder Benutzer über einen Benutzernamen und ein Kennwort, die bei der Instanziierung des Connectors als Parameter übergeben werden müssen, um Lese- und/oder Schreibvorgänge durchzuführen.In non-AD mode security, each user has a username and password which need to be provided as parameters during the connector instantiation to perform read and/or writes. Im Folgenden wird ein Beispiel für die Connectorinstanziierung im Modus ohne AD veranschaulicht:An example connector instantiation for non-AD mode is below:

# 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() 

AD-Modus:AD Mode:

Im AD-Sicherheitsmodus muss der Benutzer principal und keytab bei der Containerinstanziierung als Parameter übergeben, nachdem er eine Schlüsseltabellendatei generiert hat.In AD mode security, after a user has generated a key tab file, the user needs to provide the principal and keytab as parameters during the connector instantiation.

In diesem Modus lädt der Treiber die Schlüsseltabellendatei in die entsprechenden Executor-Container.In this mode, the driver loads the keytab file to the respective executor containers. Dann verwenden die Executor-Container den Prinzipalnamen und die Schlüsseltabelle, um ein Token zu generieren, das zum Erstellen eines JDBC-Connectors für Lese-/Schreibvorgänge verwendet wird.Then, the executors use the principal name and keytab to generate a token that is used to create a JDBC connector for read/write.

Im Folgenden wird ein Beispiel für die Connectorinstanziierung im AD-Modus veranschaulicht:An example connector instantiation for AD mode is below:

# 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() 

Die folgende Tabelle beschreibt neue oder geänderte Schnittstellenparameter:The following table describes interface parameters that have changed or are new:

EigenschaftennameProperty name OptionalOptional BESCHREIBUNGDescription
isolationLevelisolationLevel JaYes Beschreibt die Isolationsstufe der Verbindung.This describes the isolation level of the connection. Der Standardwert für den Connector lautet READ_COMMITTED.The default for the connector is READ_COMMITTED

Der Connector verwendet SQL Server-APIs für Massenschreibvorgänge.The connector uses SQL Server Bulk write APIs. Alle Parameter für Massenschreibvorgänge können vom Benutzer als optionale Parameter übergeben werden und werden vom Connector unverändert an die zugrunde liegende API übergeben.Any bulk write parameters can be passed as optional parameters by the user and are passed as-is by the connector to the underlying API. Weitere Informationen zu Massenschreibvorgängen finden Sie unter SQLServerBulkCopyOptions.For more information about bulk write operations, see SQLServerBulkCopyOptions.

Beispiel: Apache Spark-Connector für SQL Server und Azure SQLApache Spark Connector for SQL Server and Azure SQL Sample

Das Beispiel führt die folgenden Aufgaben aus:The sample performs the following tasks:

  • Lesen einer Datei aus HDFS und Ausführen einiger grundlegender VerarbeitungsschritteRead a file from HDFS and do some basic processing.
  • Schreiben des Dataframes in eine SQL Server-Masterinstanz als SQL-Tabelle und Einlesen der Tabelle in einen DataframeWrite the dataframe to a SQL Server master instance as a SQL table and then read the table to a dataframe.
  • Schreiben des Dataframes in einen SQL Server-Datenpool als externe SQL-Tabelle und Einlesen der externen Tabelle in einen DataframeWrite the dataframe to a SQL Server data pool as a SQL external table and then read the external table to a dataframe.

VoraussetzungenPrerequisites

Erstellen der ZieldatenbankCreate the target database

  1. Öffnen Sie Azure Data Studio, und stellen Sie eine Verbindung mit der SQL Server-Masterinstanz Ihres Big Data-Clusters her.Open Azure Data Studio, and connect to the SQL Server master instance of your big data cluster.

  2. Erstellen Sie eine neue Abfrage, und führen Sie den folgenden Befehl aus, um eine Beispieldatenbank namens MyTestDatabase zu erstellen.Create a new query, and run the following command to create a sample database named MyTestDatabase.

    Create DATABASE MyTestDatabase
    GO
    

Laden von Beispieldaten in HDFSLoad sample data into HDFS

  1. Laden Sie AdultCensusIncome.csv auf Ihren lokalen Computer herunter.Download AdultCensusIncome.csv to your local machine.

  2. Starten Sie Azure Data Studio, und stellen Sie eine Verbindung mit Ihrem Big Data-Cluster her.Launch Azure Data Studio, and connect to your big data cluster.

  3. Klicken Sie mit der rechten Maustaste auf den HDFS-Ordner in Ihrem Big Data-Cluster, und wählen Sie Neues Verzeichnis aus.Right-click on the HDFS folder in your big data cluster, and select New directory. Nennen Sie das Verzeichnis spark_data.Name the directory spark_data.

  4. Klicken Sie mit der rechten Maustaste auf das Verzeichnis spark_data, und wählen Sie Dateien hochladen aus.Right click on the spark_data directory, and select Upload files. Laden Sie die Datei AdultCensusIncome.csv hoch.Upload the AdultCensusIncome.csv file.

    CSV-Datei „AdultCensusIncome“

Ausführen des BeispielnotebooksRun the sample notebook

Zur Veranschaulichung der Verwendung des Apache Spark-Connectors für SQL Server und Azure SQL mit diesen Daten im Modus ohne AD können Sie ein Beispielnotebook herunterladen, dieses in Azure Data Studio öffnen und alle Codeblöcke ausführen.To demonstrate the use of the Apache Spark Connector for SQL Server and Azure SQL with this data in non-AD mode, you can download a sample notebook, open it in Azure Data Studio, and run each code block. Weitere Informationen zum Arbeiten mit Notebooks finden Sie unter Verwenden von Notebooks mit SQL Server.For more information about working with notebooks, see How to use notebooks with SQL Server.

  1. Führen Sie an einer PowerShell- oder Bash-Befehlszeile den folgenden Befehl aus, um das Beispielnotebook mssql_spark_connector_non_ad_pyspark.ipynb herunterzuladen:From a PowerShell or bash command line, run the following command to download the mssql_spark_connector_non_ad_pyspark.ipynb sample notebook:

    curl -o mssql_spark_connector.ipynb "https://raw.githubusercontent.com/microsoft/sql-server-samples/master/samples/features/sql-big-data-cluster/spark/data-virtualization/mssql_spark_connector_non_ad_pyspark.ipynb"
    
  2. Öffnen Sie die Datei mit dem Beispielnotebook in Azure Data Studio.In Azure Data Studio, open the sample notebook file. Überprüfen Sie, ob eine Verbindung mit Ihrem HDFS-/Spark-Gateway für Ihren Big Data-Cluster besteht.Verify that it is connected to your HDFS/Spark Gateway for your big data cluster.

  3. Führen Sie jede Codezelle im Beispiel aus, um zu sehen, wie der Apache Spark-Connector für SQL Server und Azure SQL verwendet wird.Run each code cell in the sample to see usage of the Apache Spark Connector for SQL Server and Azure SQL.

Nächste SchritteNext steps

Weitere Informationen zu Big Data-Cluster finden Sie unter Vorgehensweise: Bereitstellen von Big Data-Cluster für SQL ServerSQL Server Big Data Clusters auf Kubernetes.For more information about big data clusters, see How to deploy Big Data-Cluster für SQL ServerSQL Server Big Data Clusters on Kubernetes

Haben Sie Feedback oder Featurevorschläge für SQL Server-Big Data-Cluster?Have feedback or feature recommendations for SQL Server Big Data Clusters? Senden Sie uns eine Nachricht über Feedback zu Big Data-Cluster für SQL Server.Leave us a note at SQL Server Big Data Clusters Feedback.