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.
Gilt für: SQL Server 2019 (15.x)
Dieser Artikel enthält Anleitungen zum Verwenden von Befehlszeilentools zum Ausführen von Spark-Aufträgen auf SQL Server Big Data Clustern.
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.
Prerequisites
-
SQL Server 2019 Big Data-Tools konfiguriert und beim Cluster angemeldet:
azdata- Eine
curlAnwendung zum Ausführen von REST-API-Aufrufen an Livy
Spark jobs that use azdata or Livy
Dieser Artikel enthält Beispiele für die Verwendung von Befehlszeilenmustern zum Übermitteln von Spark-Anwendungen an SQL Server Big Data Cluster.
Die Azure Data CLI-Befehleazdata bdc spark enthalten alle Funktionen von SQL Server Big Data Clusters Spark in der Befehlszeile. Dieser Artikel konzentriert sich auf die Auftragsübermittlung. Unterstützt aber azdata bdc spark auch interaktive Modi für Python, Scala, SQL und R über den azdata bdc spark session Befehl.
Wenn Sie eine direkte Integration in eine REST-API benötigen, verwenden Sie standardmäßige Livy-Aufrufe, um Aufträge zu übermitteln. In diesem Artikel wird das curl Befehlszeilentool in den Livy-Beispielen verwendet, um den REST-API-Aufruf auszuführen. Ein detailliertes Beispiel, das zeigt, wie sie mit dem Spark Livy-Endpunkt mithilfe von Python-Code interagieren können, finden Sie unter "Verwenden von Spark" vom Livy-Endpunkt auf GitHub.
Einfache ETL, die Big Data Cluster Spark verwendet
Diese Extrahieren-, Transformations- und Lastanwendung (ETL) folgt einem gängigen Datentechnikmuster. Es lädt tabellarische Daten aus einem Apache Hadoop Distributed File System (HDFS)-Zielzonenpfad. Anschließend wird ein Tabellenformat verwendet, um in einen von HDFS verarbeiteten Zonenpfad zu schreiben.
Laden Sie das Dataset der Beispielanwendung herunter. Erstellen Sie dann PySpark-Anwendungen mithilfe von PySpark, Spark Scala oder Spark SQL.
In den folgenden Abschnitten finden Sie Beispielübungen für jede Lösung. Wählen Sie die Registerkarte für Ihre Plattform aus. Sie führen die Anwendung mithilfe azdata oder curl.
In diesem Beispiel wird die folgende PySpark-Anwendung verwendet. Sie wird als Python-Datei mit dem Namen parquet_etl_sample.py auf dem lokalen Computer gespeichert.
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
# Read clickstream_data from storage pool HDFS into a Spark data frame. Applies column renames.
df = spark.read.option("inferSchema", "true").csv('/securelake/landing/criteo/test.txt', sep='\t',
header=False).toDF("feat1","feat2","feat3","feat4","feat5","feat6","feat7","feat8",
"feat9","feat10","feat11","feat12","feat13","catfeat1","catfeat2","catfeat3","catfeat4",
"catfeat5","catfeat6","catfeat7","catfeat8","catfeat9","catfeat10","catfeat11","catfeat12",
"catfeat13","catfeat14","catfeat15","catfeat16","catfeat17","catfeat18","catfeat19",
"catfeat20","catfeat21","catfeat22","catfeat23","catfeat24","catfeat25","catfeat26")
# Print the data frame inferred schema
df.printSchema()
tot_rows = df.count()
print("Number of rows:", tot_rows)
# Drop the managed table
spark.sql("DROP TABLE dl_clickstream")
# Write data frame to HDFS managed table by using optimized Delta Lake table format
df.write.format("parquet").mode("overwrite").saveAsTable("dl_clickstream")
print("Sample ETL pipeline completed")
Kopieren der PySpark-Anwendung in HDFS
Speichern Sie die Anwendung in HDFS, damit der Cluster zur Ausführung darauf zugreifen kann. Als bewährte Methode können Sie Anwendungsstandorte innerhalb des Clusters standardisieren und steuern, um die Verwaltung zu optimieren.
In diesem Beispielfall werden alle ETL-Pipelineanwendungen auf dem Pfad hdfs:/apps/ETL-Pipelines gespeichert. Die Beispielanwendung wird unter hdfs:/apps/ETL-Pipelines/parquet_etl_sample.py gespeichert.
Führen Sie den folgenden Befehl aus, um parquet_etl_sample.py vom lokalen Entwicklungs- oder Stagingcomputer in den HDFS-Cluster hochzuladen.
azdata bdc hdfs cp --from-path parquet_etl_sample.py --to-path "hdfs:/apps/ETL-Pipelines/parquet_etl_sample.py"
Ausführen der Spark-Anwendung
Verwenden Sie den folgenden Befehl, um die Anwendung zur Ausführung an SQL Server Big Data Clusters Spark zu übermitteln.
Der azdata Befehl führt die Anwendung mithilfe häufig angegebener Parameter aus. Vollständige Parameteroptionen für azdata bdc spark batch create, siehe azdata bdc spark.
Für diese Anwendung ist der spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation Konfigurationsparameter erforderlich. Der Befehl verwendet also die --config Option. Dieses Setup zeigt, wie Konfigurationen an die Spark-Sitzung übergeben werden.
Sie können die --config Option verwenden, um mehrere Konfigurationsparameter anzugeben. Sie können sie auch innerhalb der Anwendungssitzung angeben, indem Sie die Konfiguration im SparkSession Objekt festlegen.
azdata bdc spark batch create -f hdfs:/apps/ETL-Pipelines/parquet_etl_sample.py \
--config '{"spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation":"true"}' \
-n MyETLPipelinePySpark --executor-count 2 --executor-cores 2 --executor-memory 1664m
Warning
Der Parameter "name" oder "n" für den Batchnamen sollte jedes Mal eindeutig sein, wenn ein neuer Batch erstellt wird.
Überwachen von Spark-Aufträgen
Die azdata bdc spark batch Befehle stellen Verwaltungsaktionen für Spark-Batchaufträge bereit.
Führen Sie den folgenden Befehl aus, um alle ausgeführten Aufträge auflisten zu können.
Der Befehl
azdata:azdata bdc spark batch list -o tableDer
curlBefehl unter Verwendung von Livy:curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches
Führen Sie den folgenden Befehl aus, um Informationen für einen Spark-Batch mit der angegebenen ID abzurufen . Die batch id Wird zurückgegeben von spark batch create.
Der Befehl
azdata:azdata bdc spark batch info --batch-id 0Der
curlBefehl unter Verwendung von Livy:curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches/<BATCH_ID>
Um Statusinformationen für einen Spark-Batch mit der angegebenen ID abzurufen, führen Sie den folgenden Befehl aus.
Der Befehl
azdata:azdata bdc spark batch state --batch-id 0Der
curlBefehl unter Verwendung von Livy:curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches/<BATCH_ID>/state
Um die Protokolle für einen Spark-Batch mit der angegebenen ID abzurufen, führen Sie den folgenden Befehl aus.
Der Befehl
azdata:azdata bdc spark batch log --batch-id 0Der
curlBefehl unter Verwendung von Livy:curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches/<BATCH_ID>/log
Next steps
Informationen zur Problembehandlung bei Spark-Code finden Sie unter Problembehandlung für ein PySpark-Notizbuch.
Umfassender Spark-Beispielcode ist unter SQL Server Big Data Clusters Spark Samples auf GitHub verfügbar.
Weitere Informationen zu SQL Server-Big Data-Cluster und zugehörige Szenarios finden Sie unter Big Data-Cluster für SQL Server.