- Artikel
Microsoft Spark Utilities (MSSparkUtils) ist ein integriertes Paket, das Sie bei der einfachen Ausführung allgemeiner Aufgaben unterstützt. Sie können MSSparkUtils verwenden, um mit Dateisystemen zu arbeiten, Umgebungsvariablen abzurufen, Notebooks miteinander zu verketten und mit Geheimnissen zu arbeiten. MSSparkUtils sind verfügbar inPySpark (Python)
,Scala
,.NET Spark (C#)
, UndR (Vorschau)
Notebooks und Synapse-Pipelines.
Voraussetzungen
Konfigurieren Sie den Zugriff auf Azure Data Lake Storage Gen2
Synapse-Notebooks verwenden Azure Active Directory (Azure AD)-Passthrough für den Zugriff auf die ADLS Gen2-Konten. Du musst ein seinMitwirkender an Speicherblobdatenum auf das ADLS Gen2-Konto (oder den Ordner) zuzugreifen.
Synapse-Pipelines verwenden die Managed Service Identity (MSI) des Workspace, um auf die Speicherkonten zuzugreifen. Um MSSparkUtils in Ihren Pipeline-Aktivitäten verwenden zu können, muss Ihre Arbeitsbereichsidentität vorhanden seinMitwirkender an Speicherblobdatenum auf das ADLS Gen2-Konto (oder den Ordner) zuzugreifen.
Befolgen Sie diese Schritte, um sicherzustellen, dass Ihr Azure AD- und Workspace-MSI Zugriff auf das ADLS Gen2-Konto hat:
Öffne dasAzure-Portalund das Speicherkonto, auf das Sie zugreifen möchten. Sie können zu dem spezifischen Container navigieren, auf den Sie zugreifen möchten.
Wähle ausZugangskontrolle (IAM)aus dem linken Bereich.
WählenHinzufügen>Rollenzuweisung hinzufügen, um die Seite „Rollenzuweisung hinzufügen“ zu öffnen.
Weisen Sie die folgende Rolle zu. Detaillierte Schritte finden Sie unterWeisen Sie Azure-Rollen über das Azure-Portal zu.
Einstellung Wert Rolle Mitwirkender an Speicherblobdaten Zugriff zuweisen auf USER und MANAGEDIDENTITY Mitglieder Ihr Azure AD-Konto und Ihre Workspace-Identität Notiz
Der Name der verwalteten Identität ist auch der Name des Arbeitsbereichs.
WählenSpeichern.
Sie können über die folgende URL auf Daten zu ADLS Gen2 mit Synapse Spark zugreifen:
abfss://
Konfigurieren Sie den Zugriff auf Azure Blob Storage
Synapse verwendetShared Access Signature (SAS)um auf Azure Blob Storage zuzugreifen. Um zu vermeiden, dass SAS-Schlüssel im Code offengelegt werden, empfehlen wir, im Synapse-Arbeitsbereich einen neuen verknüpften Dienst für das Azure Blob Storage-Konto zu erstellen, auf das Sie zugreifen möchten.
Führen Sie diese Schritte aus, um einen neuen verknüpften Dienst für ein Azure Blob Storage-Konto hinzuzufügen:
- Öffne dasAzure Synapse Studio.
- WählenVerwaltenaus dem linken Bereich und wählen Sie ausVerknüpfte Diensteunter demExterne Verbindungen.
- SuchenAzure Blob StorageimNeuer verknüpfter DienstPanel auf der rechten Seite.
- WählenWeitermachen.
- Wählen Sie das Azure Blob Storage-Konto aus, um auf den verknüpften Dienstnamen zuzugreifen und ihn zu konfigurieren. Schlagen Sie die Verwendung vorKontoschlüsselfür dieAuthentifizierungsmethode.
- WählenTestverbindungum zu überprüfen, ob die Einstellungen korrekt sind.
- WählenErstellenzuerst und klicken SieAlles veröffentlichenum Ihre Änderungen zu speichern.
Sie können mit Synapse Spark über die folgende URL auf Daten in Azure Blob Storage zugreifen:
wasb[s]://
Hier ist ein Codebeispiel:
aus pyspark.sql import SparkSession# Azure-Speicherzugriff infoblob_account_name = 'Ihr Kontoname' # durch Ihren Blobnamen ersetzenblob_container_name = 'Ihr Containername' # durch Ihren Containernamen ersetzenblob_relative_path = 'Ihr Pfad' # durch Ihren relativen Ordner ersetzen pathlinked_service_name = 'Ihr Name des verknüpften Dienstes' # durch den Namen Ihres verknüpften Dienstes ersetzenblob_sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)# Ermöglichen Sie SPARK den Zugriff von Blob aus der Fernewasb_path = 'wasbs://%s@%s.blob.core.windows.net/%s ' % (blob_container_name, blob_account_name, blob_relative_path)spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)print('Remote-Blob Pfad: ' + wasb_path)
val blob_account_name = "" // durch Ihren Blob-Namen ersetzenval blob_container_name = "" //durch Ihren Containernamen ersetzenval blob_relative_path = "/" //durch Ihren relativen Ordnerpfad ersetzenval linked_service_name = "" //durch Ihren verknüpften Dienstnamen ersetzenval blob_sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)val wasbs_path = f"wasbs://$blob_container_name@$blob_account_name.blob.core.windows.net/$blob_relative_path"spark.conf.set(f"fs.azure.sas.$blob_container_name .$blob_account_name.blob.core.windows.net",blob_sas_token)
var blob_account_name = ""; // durch Ihren Blobnamen ersetzenvar blob_container_name = ""; // durch Ihren Containernamen ersetzenvar blob_relative_path = ""; // durch den Pfad Ihres relativen Ordners ersetzenvar linked_service_name = ""; // durch den Namen Ihres verknüpften Dienstes ersetzenvar blob_sas_token = Credentials.GetConnectionStringOrCreds(linked_service_name);spark.Conf().Set($"fs.azure.sas.{blob_container_name}.{blob_account_name}.blob.core.windows.net", blob_sas_token);var wasbs_path = $"wasbs://{blob_container_name}@{blob_account_name}.blob.core.windows.net/{blob_relative_path}";Console.WriteLine(wasbs_path);
# Azure-Speicherzugriffsinfoblob_account_name <- 'Ihr Kontoname' # durch Ihren Blobnamen ersetzenblob_container_name <- 'Ihr Containername' # durch Ihren Containernamen ersetzenblob_relative_path <- 'Ihr Pfad' # durch Ihren relativen Ordnerpfadlinked_service_name <- 'Ihr verknüpfter Dienst ersetzen name' # durch den Namen Ihres verknüpften Dienstes ersetzenblob_sas_token <- mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)# Ermöglichen Sie SPARK den Remotezugriff von Blob ausparkR.session()wasb_path <- sprintf('wasbs://%s@%s.blob.core .windows.net/%s',blob_container_name, blob_account_name, blob_relative_path)sparkR.session(sprintf('fs.azure.sas.%s.%s.blob.core.windows.net',blob_container_name, blob_account_name), blob_sas_token) print( paste('Remote-Blob-Pfad: ',wasb_path))
Konfigurieren Sie den Zugriff auf Azure Key Vault
Sie können einen Azure Key Vault als verknüpften Dienst hinzufügen, um Ihre Anmeldeinformationen in Synapse zu verwalten. Befolgen Sie diese Schritte, um einen Azure Key Vault als verknüpften Synapse-Dienst hinzuzufügen:
Öffne dasAzure Synapse Studio.
WählenVerwaltenaus dem linken Bereich und wählen Sie ausVerknüpfte Diensteunter demExterne Verbindungen.
SuchenAzure Key VaultimNeuer verknüpfter DienstPanel auf der rechten Seite.
Wählen Sie das Azure Key Vault-Konto aus, um auf den verknüpften Dienstnamen zuzugreifen und ihn zu konfigurieren.
WählenTestverbindungum zu überprüfen, ob die Einstellungen korrekt sind.
WählenErstellenzuerst und klicken SieAlles veröffentlichenum Ihre Änderung zu speichern.
Synapse-Notebooks verwenden Azure Active Directory (Azure AD)-Passthrough für den Zugriff auf Azure Key Vault. Synapse-Pipelines verwenden Workspace Identity (MSI), um auf Azure Key Vault zuzugreifen. Um sicherzustellen, dass Ihr Code sowohl im Notebook als auch in der Synapse-Pipeline funktioniert, empfehlen wir, eine geheime Zugriffsberechtigung sowohl für Ihr Azure AD-Konto als auch für Ihre Arbeitsbereichsidentität zu erteilen.
Befolgen Sie diese Schritte, um geheimen Zugriff auf Ihre Workspace-Identität zu gewähren:
- Öffne dasAzure-Portalund den Azure Key Vault, auf den Sie zugreifen möchten.
- Wähle ausZugriffsrichtlinienaus dem linken Bereich.
- WählenZugriffsrichtlinie hinzufügen:
- WählenSchlüssel-, Geheim- und Zertifikatsverwaltungals Konfigurationsvorlage.
- WählenIhr Azure AD-KontoUndIhre Arbeitsplatzidentität(entspricht Ihrem Arbeitsbereichsnamen) im ausgewählten Prinzipal oder stellen Sie sicher, dass er bereits zugewiesen ist.
- WählenWählenUndHinzufügen.
- Wähle ausSpeichernKlicken Sie auf die Schaltfläche, um Änderungen zu übernehmen.
Dienstprogramme für Dateisysteme
mssparkutils.fs
stellt Dienstprogramme für die Arbeit mit verschiedenen Dateisystemen bereit, darunter Azure Data Lake Storage Gen2 (ADLS Gen2) und Azure Blob Storage. Stellen Sie sicher, dass Sie den Zugriff konfigurierenAzure Data Lake Storage Gen2UndAzure Blob Storagepassend.
Führen Sie die folgenden Befehle aus, um einen Überblick über die verfügbaren Methoden zu erhalten:
aus Notebookutils importieren mssparkutilsmssparkutils.fs.help()
mssparkutils.fs.help()
mit Microsoft.Spark.Extensions.Azure.Synapse.Analytics.Notebook.MSSparkUtils;FS.Help()
Bibliothek(notebookutils)mssparkutils.fs.help()
Ergebnisse in:
mssparkutils.fs bietet Dienstprogramme für die Arbeit mit verschiedenen Dateisystemen. Unten finden Sie eine Übersicht über die verfügbaren Methoden:cp(from: String, to: String, recurse: Boolean = false): Boolean -> Kopiert eine Datei oder ein Verzeichnis, möglicherweise über FileSystemsmv(from : String, to: String, recurse: Boolean = false): Boolean -> Verschiebt eine Datei oder ein Verzeichnis, möglicherweise über FileSystemsls(dir: String): Array -> Listet den Inhalt eines Verzeichnisses aufmkdirs(dir: String): Boolean -> Erstellt das angegebene Verzeichnis, wenn es nicht existiert, und erstellt auch alle erforderlichen übergeordneten Verzeichnisse.put(file: String, content: String, overwrite: Boolean = false): Boolean -> Schreibt den angegebenen String in eine Datei, codiert in UTF-8head( file: String, maxBytes: int = 1024 * 100): String -> Gibt bis zu den ersten „maxBytes“-Bytes der angegebenen Datei als in UTF-8 codierten String zurückappend(file: String, content: String, createFileIfNotExists: Boolean) : Boolean -> Den Inhalt an eine Datei anhängenrm(dir: String, recurse: Boolean = false): Boolean -> Entfernt eine Datei oder ein Verzeichnis. Verwenden Sie mssparkutils.fs.help("methodName") für weitere Informationen zu einer Methode.
Dateien auflisten
Listen Sie den Inhalt eines Verzeichnisses auf.
mssparkutils.fs.ls('Ihr Verzeichnispfad')
mssparkutils.fs.ls("Ihr Verzeichnispfad")
FS.Ls("Ihr Verzeichnispfad")
mssparkutils.fs.ls("Ihr Verzeichnispfad")
Dateieigenschaften anzeigen
Gibt Dateieigenschaften zurück, einschließlich Dateiname, Dateipfad, Dateigröße und ob es sich um ein Verzeichnis und eine Datei handelt.
files = mssparkutils.fs.ls('Ihr Verzeichnispfad')für Datei in Dateien: print(file.name, file.isDir, file.isFile, file.path, file.size)
val files = mssparkutils.fs.ls("/")files.foreach{ file => println(file.name,file.isDir,file.isFile,file.size)}
var Files = FS.Ls("/");foreach(var File in Files) { Console.WriteLine(File.Name+" "+File.IsDir+" "+File.IsFile+" "+File.Size);}
files <- mssparkutils.fs.ls("/")for (Datei in Dateien) { writeLines(paste(file$name, file$isDir, file$isFile, file$size))}
Neues Verzeichnis erstellen
Erstellt das angegebene Verzeichnis, falls es nicht existiert, sowie alle erforderlichen übergeordneten Verzeichnisse.
mssparkutils.fs.mkdirs('neuer Verzeichnisname')
mssparkutils.fs.mkdirs("neuer Verzeichnisname")
FS.Mkdirs("neuer Verzeichnisname")
mssparkutils.fs.mkdirs("neuer Verzeichnisname")
Datei kopieren
Kopiert eine Datei oder ein Verzeichnis. Unterstützt das Kopieren über Dateisysteme hinweg.
mssparkutils.fs.cp('Quelldatei oder -verzeichnis', 'Zieldatei oder -verzeichnis', True)# Setzen Sie den dritten Parameter auf True, um alle Dateien und Verzeichnisse rekursiv zu kopieren
mssparkutils.fs.cp("Quelldatei oder -verzeichnis", "Zieldatei oder -verzeichnis", true) // Setzen Sie den dritten Parameter auf True, um alle Dateien und Verzeichnisse rekursiv zu kopieren
FS.Cp("Quelldatei oder -verzeichnis", "Zieldatei oder -verzeichnis", true) // Setzen Sie den dritten Parameter auf True, um alle Dateien und Verzeichnisse rekursiv zu kopieren
mssparkutils.fs.cp('Quelldatei oder -verzeichnis', 'Zieldatei oder -verzeichnis', True)
Vorschau des Dateiinhalts
Gibt bis zu den ersten „maxBytes“-Bytes der angegebenen Datei als in UTF-8 codierte Zeichenfolge zurück.
mssparkutils.fs.head('Dateipfad', maximal zu lesende Bytes)
mssparkutils.fs.head("Dateipfad", maximal zu lesende Bytes)
FS.Head("Dateipfad", maximal zu lesende Bytes)
mssparkutils.fs.head('Dateipfad', maximal zu lesende Bytes)
Datei bewegen
Verschiebt eine Datei oder ein Verzeichnis. Unterstützt die Verschiebung über Dateisysteme hinweg.
mssparkutils.fs.mv('Quelldatei oder -verzeichnis', 'Zielverzeichnis', True) # Setzen Sie den letzten Parameter auf True, um zunächst das übergeordnete Verzeichnis zu erstellen, falls es nicht existiert
mssparkutils.fs.mv("Quelldatei oder Verzeichnis", "Zielverzeichnis", true) // Setzen Sie den letzten Parameter auf True, um zuerst das übergeordnete Verzeichnis zu erstellen, falls es nicht existiert
FS.Mv("Quelldatei oder -verzeichnis", "Zielverzeichnis", true)
mssparkutils.fs.mv('Quelldatei oder -verzeichnis', 'Zielverzeichnis', True) # Setzen Sie den letzten Parameter auf True, um zunächst das übergeordnete Verzeichnis zu erstellen, falls es nicht existiert
Datei schreiben
Schreibt die angegebene Zeichenfolge in eine Datei, codiert in UTF-8.
mssparkutils.fs.put("Dateipfad", "zu schreibender Inhalt", True) # Setzen Sie den letzten Parameter auf True, um die Datei zu überschreiben, wenn sie bereits vorhanden ist
mssparkutils.fs.put("Dateipfad", "zu schreibender Inhalt", true) // Setzen Sie den letzten Parameter auf True, um die Datei zu überschreiben, wenn sie bereits vorhanden ist
FS.Put("Dateipfad", "Zu schreibender Inhalt", true) // Setzen Sie den letzten Parameter auf True, um die Datei zu überschreiben, wenn sie bereits vorhanden ist
mssparkutils.fs.put("Dateipfad", "zu schreibender Inhalt", True) # Setzen Sie den letzten Parameter auf True, um die Datei zu überschreiben, wenn sie bereits vorhanden ist
Inhalt an eine Datei anhängen
Hängt die angegebene Zeichenfolge an eine Datei an, die in UTF-8 codiert ist.
mssparkutils.fs.append("Dateipfad", "Inhalt zum Anhängen", True) # Setzen Sie den letzten Parameter auf True, um die Datei zu erstellen, wenn sie nicht existiert
mssparkutils.fs.append("file path","content to append",true) // Setzen Sie den letzten Parameter auf True, um die Datei zu erstellen, wenn sie nicht existiert
FS.Append("file path", "content to append", true) // Setzen Sie den letzten Parameter auf True, um die Datei zu erstellen, wenn sie nicht existiert
mssparkutils.fs.append("Dateipfad", "Inhalt zum Anhängen", True) # Setzen Sie den letzten Parameter auf True, um die Datei zu erstellen, wenn sie nicht existiert
Datei oder Verzeichnis löschen
Entfernt eine Datei oder ein Verzeichnis.
mssparkutils.fs.rm('file path', True) # Setzen Sie den letzten Parameter auf True, um alle Dateien und Verzeichnisse rekursiv zu entfernen
mssparkutils.fs.rm("file path", true) // Setzen Sie den letzten Parameter auf True, um alle Dateien und Verzeichnisse rekursiv zu entfernen
FS.Rm("file path", true) // Den letzten Parameter auf True setzen, um alle Dateien und Verzeichnisse rekursiv zu entfernen
mssparkutils.fs.rm('file path', True) # Setzen Sie den letzten Parameter auf True, um alle Dateien und Verzeichnisse rekursiv zu entfernen
Notebook-Dienstprogramme
Nicht unterstützt.
Sie können die MSSparkUtils Notebook-Dienstprogramme verwenden, um ein Notebook auszuführen oder ein Notebook mit einem Wert zu beenden. Führen Sie den folgenden Befehl aus, um einen Überblick über die verfügbaren Methoden zu erhalten:
mssparkutils.notebook.help()
Ergebnisse bekommen:
Das Notebook-Modul.exit(value: String): void -> Mit dieser Methode können Sie ein Notebook mit einem Wert beenden.run(path: String, timeoutSeconds: int, arguments: Map): String -> Diese Methode führt ein Notebook aus und gibt zurück sein Ausstiegswert.
Verweisen Sie auf ein Notizbuch
Verweist auf ein Notebook und gibt seinen Exit-Wert zurück. Sie können verschachtelte Funktionsaufrufe interaktiv oder in einer Pipeline in einem Notebook ausführen. Das referenzierte Notebook wird auf dem Spark-Pool ausgeführt, dessen Notebook diese Funktion aufruft.
mssparkutils.notebook.run("Notebook-Pfad", , )
Zum Beispiel:
mssparkutils.notebook.run("folder/Sample1", 90, {"input": 20 })
Nachdem der Lauf beendet ist, sehen Sie einen Snapshot-Link mit dem Namen „Notebook-Ausführung anzeigen:Notizbuchname' in der Zellenausgabe angezeigt wird, können Sie auf den Link klicken, um den Snapshot für diesen bestimmten Lauf anzuzeigen.
Beenden Sie ein Notizbuch
Beendet ein Notizbuch mit einem Wert. Sie können verschachtelte Funktionsaufrufe interaktiv oder in einer Pipeline in einem Notebook ausführen.
Wenn Sie einen anrufenAusfahrt()Wenn Sie die Funktion interaktiv über ein Notebook ausführen, löst Azure Synapse eine Ausnahme aus, überspringt laufende Teilsequenzzellen und hält die Spark-Sitzung am Leben.
Wenn Sie ein Notizbuch orchestrieren, das eine aufruft
Ausfahrt()
Wenn Sie eine Funktion in einer Synapse-Pipeline verwenden, gibt Azure Synapse einen Exit-Wert zurück, schließt die Pipeline-Ausführung ab und beendet die Spark-Sitzung.Wenn Sie einen anrufen
Ausfahrt()
Funktion in einem Notebook, auf das verwiesen wird, stoppt Azure Synapse die weitere Ausführung in dem Notebook, auf das verwiesen wird, und fährt mit der Ausführung der nächsten Zellen im Notebook fort, die die Funktion aufrufenlaufen()
Funktion. Beispiel: Notebook1 hat drei Zellen und ruft an aufAusfahrt()
Funktion in der zweiten Zelle. Notebook2 verfügt über fünf Zellen und Anruferun(notebook1)
in der dritten Zelle. Wenn Sie Notebook2 ausführen, wird Notebook1 beim Klicken auf die zweite Zelle angehaltenAusfahrt()
Funktion. Notebook2 wird weiterhin seine vierte und fünfte Zelle betreiben.
mssparkutils.notebook.exit("Wertzeichenfolge")
Zum Beispiel:
Probe1Notebook befindet sich untenOrdner/mit folgenden zwei Zellen:
- Zelle 1 definiert eineEingangParameter mit einem Standardwert von 10.
- Zelle 2 verlässt das Notebook mitEingangals Ausstiegswert.
Sie können das ausführenProbe1in einem anderen Notizbuch mit Standardwerten:
exitVal = mssparkutils.notebook.run("folder/Sample1")print (exitVal)
Ergebnisse in:
Der Erfolg des Beispiel1-Laufs mit Eingabe beträgt 10
Sie können das ausführenProbe1in ein anderes Notizbuch und stellen Sie das einEingangWert als 20:
exitVal = mssparkutils.notebook.run("mssparkutils/folder/Sample1", 90, {"input": 20 })print (exitVal)
Ergebnisse in:
Der Erfolg des Beispiel1-Laufs mit Eingabe beträgt 20
Sie können die MSSparkUtils Notebook-Dienstprogramme verwenden, um ein Notebook auszuführen oder ein Notebook mit einem Wert zu beenden. Führen Sie den folgenden Befehl aus, um einen Überblick über die verfügbaren Methoden zu erhalten:
mssparkutils.notebook.help()
Ergebnisse bekommen:
Das Notebook-Modul.exit(value: String): void -> Mit dieser Methode können Sie ein Notebook mit einem Wert beenden.run(path: String, timeoutSeconds: int, arguments: Map): String -> Diese Methode führt ein Notebook aus und gibt zurück sein Ausstiegswert.
Verweisen Sie auf ein Notizbuch
Verweist auf ein Notebook und gibt seinen Exit-Wert zurück. Sie können verschachtelte Funktionsaufrufe interaktiv oder in einer Pipeline in einem Notebook ausführen. Das referenzierte Notebook wird auf dem Spark-Pool ausgeführt, dessen Notebook diese Funktion aufruft.
mssparkutils.notebook.run("Notebook-Pfad", , )
Zum Beispiel:
mssparkutils.notebook.run("folder/Sample1", 90, Map("input" -> 20))
Nachdem der Lauf beendet ist, sehen Sie einen Snapshot-Link mit dem Namen „Notebook-Ausführung anzeigen:Notizbuchname' in der Zellenausgabe angezeigt wird, können Sie auf den Link klicken, um den Snapshot für diesen bestimmten Lauf anzuzeigen.
Beenden Sie ein Notizbuch
Beendet ein Notizbuch mit einem Wert. Sie können verschachtelte Funktionsaufrufe interaktiv oder in einer Pipeline in einem Notebook ausführen.
Wenn Sie einen anrufen
Ausfahrt()
Wenn Sie ein Notebook interaktiv bedienen, löst Azure Synapse eine Ausnahme aus, überspringt laufende Teilsequenzzellen und hält die Spark-Sitzung am Leben.Wenn Sie ein Notizbuch orchestrieren, das eine aufruft
Ausfahrt()
Wenn Sie eine Funktion in einer Synapse-Pipeline verwenden, gibt Azure Synapse einen Exit-Wert zurück, schließt die Pipeline-Ausführung ab und beendet die Spark-Sitzung.Wenn Sie einen anrufen
Ausfahrt()
Funktion in einem Notebook, auf das verwiesen wird, stoppt Azure Synapse die weitere Ausführung in dem Notebook, auf das verwiesen wird, und fährt mit der Ausführung der nächsten Zellen im Notebook fort, die die Funktion aufrufenlaufen()
Funktion. Beispiel: Notebook1 hat drei Zellen und ruft an aufAusfahrt()
Funktion in der zweiten Zelle. Notebook2 verfügt über fünf Zellen und Anruferun(notebook1)
in der dritten Zelle. Wenn Sie Notebook2 ausführen, wird Notebook1 beim Klicken auf die zweite Zelle angehaltenAusfahrt()
Funktion. Notebook2 wird weiterhin seine vierte und fünfte Zelle betreiben.
mssparkutils.notebook.exit("Wertzeichenfolge")
Zum Beispiel:
Probe1Notebook befindet sich untenmssparkutils/folder/mit folgenden zwei Zellen:
- Zelle 1 definiert eineEingangParameter mit einem Standardwert von 10.
- Zelle 2 verlässt das Notebook mitEingangals Ausstiegswert.
Sie können das ausführenProbe1in einem anderen Notizbuch mit Standardwerten:
val exitVal = mssparkutils.notebook.run("mssparkutils/folder/Sample1")print(exitVal)
Ergebnisse in:
exitVal: String = Beispiel1-Lauferfolg mit Eingabe ist 10. Beispiel1-Lauferfolg mit Eingabe ist 10
Sie können das ausführenProbe1in ein anderes Notizbuch und stellen Sie das einEingangWert als 20:
val exitVal = mssparkutils.notebook.run("mssparkutils/folder/Sample1", 90, {"input": 20 })print(exitVal)
Ergebnisse in:
exitVal: String = Beispiel1-Lauferfolg mit Eingabe ist 20. Beispiel1-Lauferfolg mit Eingabe ist 20
Sie können die MSSparkUtils Notebook-Dienstprogramme verwenden, um ein Notebook auszuführen oder ein Notebook mit einem Wert zu beenden. Führen Sie den folgenden Befehl aus, um einen Überblick über die verfügbaren Methoden zu erhalten:
mssparkutils.notebook.help()
Ergebnisse bekommen:
Das Notebook-Modul.exit(value: String): void -> Mit dieser Methode können Sie ein Notebook mit einem Wert beenden.run(path: String, timeoutSeconds: int, arguments: Map): String -> Diese Methode führt ein Notebook aus und gibt zurück sein Ausstiegswert.
Verweisen Sie auf ein Notizbuch
Verweist auf ein Notebook und gibt seinen Exit-Wert zurück. Sie können verschachtelte Funktionsaufrufe interaktiv oder in einer Pipeline in einem Notebook ausführen. Das referenzierte Notebook wird auf dem Spark-Pool ausgeführt, dessen Notebook diese Funktion aufruft.
mssparkutils.notebook.run("Notebook-Pfad", , )
Zum Beispiel:
mssparkutils.notebook.run("folder/Sample1", 90, {"input": 20 })
Nachdem der Lauf beendet ist, sehen Sie einen Snapshot-Link mit dem Namen „Notebook-Ausführung anzeigen:Notizbuchname' in der Zellenausgabe angezeigt wird, können Sie auf den Link klicken, um den Snapshot für diesen bestimmten Lauf anzuzeigen.
Beenden Sie ein Notizbuch
Beendet ein Notizbuch mit einem Wert. Sie können verschachtelte Funktionsaufrufe interaktiv oder in einer Pipeline in einem Notebook ausführen.
Wenn Sie einen anrufen
Ausfahrt()
Wenn Sie ein Notebook interaktiv bedienen, löst Azure Synapse eine Ausnahme aus, überspringt laufende Teilsequenzzellen und hält die Spark-Sitzung am Leben.Wenn Sie ein Notizbuch orchestrieren, das eine aufruft
Ausfahrt()
Wenn Sie eine Funktion in einer Synapse-Pipeline verwenden, gibt Azure Synapse einen Exit-Wert zurück, schließt die Pipeline-Ausführung ab und beendet die Spark-Sitzung.Wenn Sie einen anrufen
Ausfahrt()
Funktion in einem Notebook, auf das verwiesen wird, stoppt Azure Synapse die weitere Ausführung in dem Notebook, auf das verwiesen wird, und fährt mit der Ausführung der nächsten Zellen im Notebook fort, die die Funktion aufrufenlaufen()
Funktion. Beispiel: Notebook1 hat drei Zellen und ruft an aufAusfahrt()
Funktion in der zweiten Zelle. Notebook2 verfügt über fünf Zellen und Anruferun(notebook1)
in der dritten Zelle. Wenn Sie Notebook2 ausführen, wird Notebook1 beim Klicken auf die zweite Zelle angehaltenAusfahrt()
Funktion. Notebook2 wird weiterhin seine vierte und fünfte Zelle betreiben.
mssparkutils.notebook.exit("Wertzeichenfolge")
Zum Beispiel:
Probe1Notebook befindet sich untenOrdner/mit folgenden zwei Zellen:
- Zelle 1 definiert eineEingangParameter mit einem Standardwert von 10.
- Zelle 2 verlässt das Notebook mitEingangals Ausstiegswert.
Sie können das ausführenProbe1in einem anderen Notizbuch mit Standardwerten:
exitVal <- mssparkutils.notebook.run("folder/Sample1")print (exitVal)
Ergebnisse in:
Der Erfolg des Beispiel1-Laufs mit Eingabe beträgt 10
Sie können das ausführenProbe1in ein anderes Notizbuch und stellen Sie das einEingangWert als 20:
exitVal <- mssparkutils.notebook.run("mssparkutils/folder/Sample1", 90, {"input": 20 })print (exitVal)
Ergebnisse in:
Der Erfolg des Beispiel1-Laufs mit Eingabe beträgt 20
Dienstprogramme für Anmeldeinformationen
Sie können die MSSparkUtils-Anmeldeinformationsdienstprogramme verwenden, um die Zugriffstoken verknüpfter Dienste abzurufen und Geheimnisse in Azure Key Vault zu verwalten.
Führen Sie den folgenden Befehl aus, um einen Überblick über die verfügbaren Methoden zu erhalten:
mssparkutils.credentials.help()
mssparkutils.credentials.help()
Nicht unterstützt.
mssparkutils.credentials.help()
Ergebnis erhalten:
getToken(audience, name): gibt AAD-Token für eine bestimmte Zielgruppe zurück, Name (optional)isValidToken(token): gibt true zurück, wenn das Token nicht abgelaufen istgetConnectionStringOrCreds(linkedService): gibt Verbindungszeichenfolge oder Anmeldeinformationen für den verknüpften Dienst zurückgetFullConnectionString(linkedService): gibt full zurück Verbindungszeichenfolge mit AnmeldeinformationengetPropertiesAll(linkedService): gibt alle Eigenschaften eines verknüpften Dienstes zurückgetSecret(akvName, Secret, linkedService): gibt das AKV-Geheimnis für einen bestimmten AKV-verknüpften Dienst zurück, akvName, geheimer SchlüsselgetSecret(akvName, Secret): gibt das AKV-Geheimnis für einen bestimmten zurück akvName, Secret keygetSecretWithLS(linkedService, Secret): Gibt das AKV-Geheimnis für einen bestimmten verknüpften Dienst zurück, Secret keyputSecret(akvName, SecretName, SecretValue, LinkedService): Gibt das AKV-Geheimnis für einen bestimmten AkvName, SecretNameputSecret(akvName, SecretName, SecretValue): Gibt AKV ein Geheimnis für einen bestimmten akvName, SecretNameputSecretWithLS(linkedService, SecretName, SecretValue): legt das AKV-Geheimnis für einen bestimmten verknüpften Dienst, SecretName, fest
getToken(audience, name): gibt AAD-Token für eine bestimmte Zielgruppe zurück, Name (optional)isValidToken(token): gibt true zurück, wenn das Token nicht abgelaufen istgetConnectionStringOrCreds(linkedService): gibt Verbindungszeichenfolge oder Anmeldeinformationen für den verknüpften Dienst zurückgetFullConnectionString(linkedService): gibt full zurück Verbindungszeichenfolge mit AnmeldeinformationengetPropertiesAll(linkedService): gibt alle Eigenschaften eines verknüpften Dienstes zurückgetSecret(akvName, Secret, linkedService): gibt das AKV-Geheimnis für einen bestimmten AKV-verknüpften Dienst zurück, akvName, geheimer SchlüsselgetSecret(akvName, Secret): gibt das AKV-Geheimnis für einen bestimmten zurück akvName, Secret keygetSecretWithLS(linkedService, Secret): Gibt das AKV-Geheimnis für einen bestimmten verknüpften Dienst zurück, Secret keyputSecret(akvName, SecretName, SecretValue, LinkedService): Gibt das AKV-Geheimnis für einen bestimmten AkvName, SecretNameputSecret(akvName, SecretName, SecretValue): Gibt AKV ein Geheimnis für einen bestimmten akvName, SecretNameputSecretWithLS(linkedService, SecretName, SecretValue): legt das AKV-Geheimnis für einen bestimmten verknüpften Dienst, SecretName, fest
getToken(audience, name): gibt AAD-Token für eine bestimmte Zielgruppe zurück, Name (optional)isValidToken(token): gibt true zurück, wenn das Token nicht abgelaufen istgetConnectionStringOrCreds(linkedService): gibt Verbindungszeichenfolge oder Anmeldeinformationen für den verknüpften Dienst zurückgetFullConnectionString(linkedService): gibt full zurück Verbindungszeichenfolge mit AnmeldeinformationengetPropertiesAll(linkedService): gibt alle Eigenschaften eines verknüpften Dienstes zurückgetSecret(akvName, Secret, linkedService): gibt das AKV-Geheimnis für einen bestimmten AKV-verknüpften Dienst zurück, akvName, geheimer SchlüsselgetSecret(akvName, Secret): gibt das AKV-Geheimnis für einen bestimmten zurück akvName, Secret keyputSecret(akvName, SecretName, SecretValue, LinkedService): legt AKV-Geheimnis für einen gegebenen Akv-Namen fest, SecretNameputSecret(akvName, SecretName, SecretValue): legt AKV-Geheimnis für einen gegebenen Akv-Namen fest, SecretNameputSecretWithLS(LinkedService, SecretName, SecretValue): legt AKV ein Geheimnis für einen bestimmten verknüpften Dienst, SecretName
Notiz
Derzeit wird getSecretWithLS(linkedService, Secret) in C# nicht unterstützt.
getToken(audience, name): gibt AAD-Token für eine bestimmte Zielgruppe zurück, Name (optional)isValidToken(token): gibt true zurück, wenn das Token nicht abgelaufen istgetConnectionStringOrCreds(linkedService): gibt Verbindungszeichenfolge oder Anmeldeinformationen für den verknüpften Dienst zurückgetFullConnectionString(linkedService): gibt full zurück Verbindungszeichenfolge mit AnmeldeinformationengetPropertiesAll(linkedService): gibt alle Eigenschaften eines verknüpften Dienstes zurückgetSecret(akvName, Secret, linkedService): gibt das AKV-Geheimnis für einen bestimmten AKV-verknüpften Dienst zurück, akvName, geheimer SchlüsselgetSecret(akvName, Secret): gibt das AKV-Geheimnis für einen bestimmten zurück akvName, Secret keygetSecretWithLS(linkedService, Secret): Gibt das AKV-Geheimnis für einen bestimmten verknüpften Dienst zurück, Secret keyputSecret(akvName, SecretName, SecretValue, LinkedService): Gibt das AKV-Geheimnis für einen bestimmten AkvName, SecretNameputSecret(akvName, SecretName, SecretValue): Gibt AKV ein Geheimnis für einen bestimmten akvName, SecretNameputSecretWithLS(linkedService, SecretName, SecretValue): legt das AKV-Geheimnis für einen bestimmten verknüpften Dienst, SecretName, fest
Bekomme Token
Gibt ein Azure AD-Token für eine bestimmte Zielgruppe zurück, Name (optional). In der folgenden Tabelle sind alle verfügbaren Zielgruppentypen aufgeführt:
Zielgruppentyp | Zielgruppenschlüssel |
---|---|
Zielgruppenauflösungstyp | 'Publikum' |
Speicherzielgruppenressource | 'Lagerung' |
Dedizierte SQL-Pools (Data Warehouse) | 'DW' |
Data Lake-Zielgruppenressource | „AzureManagement“ |
Vault-Zielgruppenressource | 'DataLakeStore' |
Azure OSSDB-Zielgruppenressource | „AzureOSSDB“ |
Azure Synapse-Ressource | 'Synapse' |
Azure Data Factory-Ressource | 'ADF' |
mssparkutils.credentials.getToken('audience Key')
mssparkutils.credentials.getToken("Zielgruppenschlüssel")
Credentials.GetToken("Zielgruppenschlüssel")
mssparkutils.credentials.getToken('audience Key')
Token validieren
Gibt true zurück, wenn das Token nicht abgelaufen ist.
mssparkutils.credentials.isValidToken('Ihr Token')
mssparkutils.credentials.isValidToken("Ihr Token")
Credentials.IsValidToken("Ihr Token")
mssparkutils.credentials.isValidToken('Ihr Token')
Verbindungszeichenfolge oder Anmeldeinformationen für den verknüpften Dienst abrufen
Gibt eine Verbindungszeichenfolge oder Anmeldeinformationen für den verknüpften Dienst zurück.
mssparkutils.credentials.getConnectionStringOrCreds('verknüpfter Dienstname')
mssparkutils.credentials.getConnectionStringOrCreds("Name des verknüpften Dienstes")
Credentials.GetConnectionStringOrCreds("Name des verknüpften Dienstes")
mssparkutils.credentials.getConnectionStringOrCreds('verknüpfter Dienstname')
Erhalten Sie Geheimnisse mithilfe der Workspace-Identität
Gibt das Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen mithilfe der Arbeitsbereichsidentität zurück. Stellen Sie sicher, dass Sie den Zugriff konfigurierenAzure Key Vaultpassend.
mssparkutils.credentials.getSecret('Azure Key Vault Name','Secret Name','Linked Service Name')
mssparkutils.credentials.getSecret(„Azure Key Vault-Name“, „Geheimname“, „Name des verknüpften Dienstes“)
Credentials.GetSecret(„Azure Key Vault-Name“, „Geheimname“, „Name des verknüpften Dienstes“)
mssparkutils.credentials.getSecret('Azure Key Vault Name','Secret Name','Linked Service Name')
Erhalten Sie Geheimnisse mithilfe von Benutzeranmeldeinformationen
Gibt das Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen mithilfe von Benutzeranmeldeinformationen zurück.
mssparkutils.credentials.getSecret('Azure Key Vault Name','Secret Name')
mssparkutils.credentials.getSecret(„Azure Key Vault-Name“, „Geheimname“)
Credentials.GetSecret(„Azure Key Vault-Name“, „Geheimname“)
mssparkutils.credentials.getSecret('Azure Key Vault Name','Secret Name')
Geben Sie das Geheimnis mithilfe der Workspace-Identität an
Fügt mithilfe der Arbeitsbereichsidentität ein Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen ein. Stellen Sie sicher, dass Sie den Zugriff auf konfigurierenAzure Key Vaultpassend.
mssparkutils.credentials.putSecret('azure Key Vault Name','geheimer Name','geheimer Wert','verknüpfter Dienstname')
Geben Sie das Geheimnis mithilfe der Workspace-Identität an
Fügt mithilfe der Arbeitsbereichsidentität ein Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen ein. Stellen Sie sicher, dass Sie den Zugriff auf konfigurierenAzure Key Vaultpassend.
mssparkutils.credentials.putSecret(„Azure Key Vault-Name“, „geheimer Name“, „geheimer Wert“, „verknüpfter Dienstname“)
Geben Sie das Geheimnis mithilfe der Workspace-Identität an
Fügt mithilfe der Arbeitsbereichsidentität ein Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen ein. Stellen Sie sicher, dass Sie den Zugriff auf konfigurierenAzure Key Vaultpassend.
mssparkutils.credentials.putSecret('azure Key Vault Name','geheimer Name','geheimer Wert','verknüpfter Dienstname')
Geben Sie das Geheimnis mithilfe der Benutzeranmeldeinformationen ein
Fügt mithilfe von Benutzeranmeldeinformationen ein Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen ein.
mssparkutils.credentials.putSecret('azure Key Vault Name','geheimer Name','geheimer Wert')
Geben Sie das Geheimnis mithilfe der Benutzeranmeldeinformationen ein
Fügt mithilfe von Benutzeranmeldeinformationen ein Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen ein.
mssparkutils.credentials.putSecret('azure Key Vault Name','geheimer Name','geheimer Wert')
Geben Sie das Geheimnis mithilfe der Benutzeranmeldeinformationen ein
Fügt mithilfe von Benutzeranmeldeinformationen ein Azure Key Vault-Geheimnis für einen bestimmten Azure Key Vault-Namen, einen Geheimnamen und einen verknüpften Dienstnamen ein.
mssparkutils.credentials.putSecret(„Azure Key Vault-Name“, „Geheimname“, „Geheimwert“)
Umweltversorger
Führen Sie die folgenden Befehle aus, um einen Überblick über die verfügbaren Methoden zu erhalten:
mssparkutils.env.help()
mssparkutils.env.help()
mssparkutils.env.help()
Env.Help()
Ergebnis erhalten:
getUserName(): gibt den Benutzernamen zurückgetUserId(): gibt die eindeutige Benutzer-ID zurückgetJobId(): gibt die Job-ID zurückgetWorkspaceName(): gibt den Arbeitsbereichsnamen zurückgetPoolName(): gibt den Spark-Pool-Namen zurückgetClusterId(): gibt die Cluster-ID zurück
Benutzernamen abrufen
Gibt den aktuellen Benutzernamen zurück.
mssparkutils.env.getUserName()
mssparkutils.env.getUserName()
mssparkutils.env.getUserName()
Env.GetUserName()
Benutzer-ID abrufen
Gibt die aktuelle Benutzer-ID zurück.
mssparkutils.env.getUserId()
mssparkutils.env.getUserId()
mssparkutils.env.getUserId()
Env.GetUserId()
Holen Sie sich die Job-ID
Gibt die Job-ID zurück.
mssparkutils.env.getJobId()
mssparkutils.env.getJobId()
mssparkutils.env.getJobId()
Env.GetJobId()
Arbeitsbereichsnamen abrufen
Gibt den Namen des Arbeitsbereichs zurück.
mssparkutils.env.getWorkspaceName()
mssparkutils.env.getWorkspaceName()
mssparkutils.env.getWorkspaceName()
Env.GetWorkspaceName()
Poolnamen abrufen
Gibt den Namen des Spark-Pools zurück.
mssparkutils.env.getPoolName()
mssparkutils.env.getPoolName()
mssparkutils.env.getPoolName()
Env.GetPoolName()
Cluster-ID abrufen
Gibt die aktuelle Cluster-ID zurück.
mssparkutils.env.getClusterId()
mssparkutils.env.getClusterId()
mssparkutils.env.getClusterId()
Env.GetClusterId()
Laufzeitkontext
Mssparkutils-Laufzeit-Utils haben 3 Laufzeiteigenschaften offengelegt. Sie können den mssparkutils-Laufzeitkontext verwenden, um die unten aufgeführten Eigenschaften abzurufen:
- Notizbuchname– Der Name des aktuellen Notebooks gibt sowohl im interaktiven Modus als auch im Pipeline-Modus immer einen Wert zurück.
- Pipelinejobid– Die Pipeline-Lauf-ID gibt im Pipeline-Modus einen Wert und im interaktiven Modus eine leere Zeichenfolge zurück.
- Aktivitätsrunid– Die Ausführungs-ID der Notebook-Aktivität gibt im Pipeline-Modus einen Wert und im interaktiven Modus eine leere Zeichenfolge zurück.
Derzeit unterstützt der Laufzeitkontext sowohl Python als auch Scala.
mssparkutils.runtime.context
ctx <- mssparkutils.runtime.context()for (key in ls(ctx)) { writeLines(paste(key, ctx[[key]], sep = "\t"))}
%%sparkmssparkutils.runtime.context
Sitzungsverwaltung
Stoppen Sie eine interaktive Sitzung
Anstatt manuell auf die Schaltfläche „Beenden“ zu klicken, ist es manchmal bequemer, eine interaktive Sitzung durch Aufrufen einer API im Code zu beenden. Für solche Fälle stellen wir eine API zur Verfügungmssparkutils.session.stop()
Um das Stoppen der interaktiven Sitzung per Code zu unterstützen, ist es für Scala und Python verfügbar.
mssparkutils.session.stop()
mssparkutils.session.stop()
mssparkutils.session.stop()
mssparkutils.session.stop()
Die API stoppt die aktuelle interaktive Sitzung asynchron im Hintergrund, stoppt die Spark-Sitzung und gibt von der Sitzung belegte Ressourcen frei, sodass sie für andere Sitzungen im selben Pool verfügbar sind.
Notiz
Wir empfehlen keine in die Aufrufsprache integrierten APIs wiesys.exit
in Scala odersys.exit()
in Python in Ihrem Code, da solche APIs einfach den Interpreterprozess beenden, die Spark-Sitzung am Leben bleibt und keine Ressourcen freigegeben werden.
Nächste Schritte
- Schauen Sie sich die Synapse-Beispielnotizbücher an
- Schnellstart: Erstellen Sie mithilfe von Webtools einen Apache Spark-Pool in Azure Synapse Analytics
- Was ist Apache Spark in Azure Synapse Analytics?
- Azure Synapse Analytics
- So verwenden Sie die Datei-Mount/Unmount-API in Synapse