Verwalten von sitzungsbezogenen Paketen

Zusätzlich zu den Paketen auf Poolebene können Sie zu Beginn einer Notebook-Sitzung auch sitzungsbezogene Bibliotheken angeben. Mithilfe sitzungsbezogener Bibliotheken können Sie Python-, JAR- und R-Pakete innerhalb einer Notebooksitzung angeben und verwenden.

Bei der Verwendung sitzungsbezogener Bibliotheken sind folgende Punkte zu berücksichtigen:

  • Wenn Sie sitzungsbezogene Bibliotheken installieren, kann nur das aktuelle Notebook auf die angegebenen Bibliotheken zugreifen.
  • Diese Bibliotheken wirken sich nicht auf andere Sitzungen oder Aufträge aus, die denselben Spark-Pool verwenden.
  • Diese Bibliotheken werden zusätzlich zur Basisruntime und den Bibliotheken auf Poolebene installiert und haben die höchste Priorität.
  • Sitzungsbezogene Bibliotheken werden nicht sitzungsübergreifend beibehalten.

Sitzungsbezogene Python-Pakete

Verwalten sitzungsbezogener Python-Pakete über die Datei environment.yml

So geben Sie sitzungsbezogene Python-Pakete an

  1. Navigieren Sie zum ausgewählten Spark-Pool, und stellen Sie sicher, dass Sie Bibliotheken auf Sitzungsebene aktiviert haben. Sie können diese Einstellung aktivieren, indem Sie zu Verwalten>Apache Spark-Pool>Registerkarte Pakete navigieren. Screenshot: Aktivieren von Sitzungspaketen
  2. Sobald die Einstellung angewendet wird, können Sie ein Notebook öffnen und Sitzung konfigurieren>Pakete auswählen. Screenshot: Angabe der Sitzungspakete.Screenshot: Hochladen der YML-Datei.
  3. Hier können Sie eine Conda-environment.yml-Datei hochladen, um Pakete innerhalb einer Sitzung zu installieren oder zu aktualisieren. Die angegebenen Bibliotheken sind vorhanden, sobald die Sitzung gestartet wird. Diese Bibliotheken sind nach dem Ende der Sitzung nicht mehr verfügbar.

Verwalten von Python-Paketen im Sitzungsbereich über %pip- und %conda-Befehle

Sie können die beliebten %pip- und %conda-Befehle verwenden, um zusätzliche Bibliotheken von Drittanbietern oder Ihre benutzerdefinierten Bibliotheken während Ihrer Apache Spark-Notebooksitzung zu installieren. In diesem Abschnitt verwenden wir %pip-Befehle, um mehrere gängige Szenarien zu veranschaulichen.

Hinweis

  • Wir empfehlen die %pip- und %conda-Befehle am Anfang Ihres Notebooks zu platzieren, wenn Sie neue Bibliotheken installieren möchten. Der Python-Interpreter wird neu gestartet, nachdem die Bibliothek auf Sitzungsebene verwaltet wurde, um die Änderungen wirksam zu machen.
  • Diese Befehle zum Verwalten von Python-Bibliotheken werden beim Ausführen von Pipelineaufträgen deaktiviert. Wenn Sie ein Paket innerhalb einer Pipeline installieren möchten, müssen Sie die Funktionen zur Bibliotheksverwaltung auf Poolebene nutzen.
  • Sitzungsbezogene Python-Bibliotheken werden automatisch auf den Treiber- und Workerknoten installiert.
  • Die folgenden %conda-Befehle werden nicht unterstützt: erstellen, bereinigen, vergleichen, aktivieren, deaktivieren, ausführen, paketieren.
  • Die vollständige Liste der verfügbaren Befehle finden Sie in diesen Artikeln zu %pip-Befehlen und %conda-Befehlen.

Installieren eines Drittanbieterpakets

Sie können eine Python-Bibliothek ganz einfach über PyPI installieren.

# Install vega_datasets
%pip install altair vega_datasets

Um das Installationsergebnis zu überprüfen, können Sie den folgenden Code ausführen, um vega_datasets zu visualisieren.

# Create a scatter plot
# Plot Miles per gallon against the horsepower across different region

import altair as alt
from vega_datasets import data

cars = data.cars()
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
).interactive()

Installieren eines Wheel-Pakets über ein Speicherkonto

Um die Bibliothek aus dem Speicher zu installieren, müssen Sie die folgenden Befehle zum Einbinden in Ihr Speicherkonto ausführen.

from notebookutils import mssparkutils  
 
mssparkutils.fs.mount(  
    "abfss://<<file system>>@<<storage account>.dfs.core.windows.net",  
    "/<<path to wheel file>>",  
    {"linkedService":"<<storage name>>"}  
) 

Anschließend können Sie den Befehl %pip install verwenden, um das erforderliche Wheel-Paket zu installieren.

%pip install /<<path to wheel file>>/<<wheel package name>>.whl

Installieren einer anderen Version der integrierten Bibliothek

Sie können den folgenden Befehl verwenden, um die integrierte Version eines bestimmten Pakets zu ermitteln. Wir verwenden pandas als Beispiel.

%pip show pandas

Das Ergebnis ist wie das folgende Protokoll:

Name: pandas
Version: **1.2.3**
Summary: Powerful data structures for data analysis, time series, and statistics
Home-page: https://pandas.pydata.org
... ...

Sie können den folgenden Befehl verwenden, um die Version von pandas zu wechseln, z. B. zu 1.2.4.

%pip install pandas==1.2.4

Deinstallieren einer sitzungsbezogenen Bibliothek

Wenn Sie ein Paket deinstallieren möchten, das in dieser Notebooksitzung installiert wird, können Sie die folgenden Befehle verwenden. Sie können die integrierten Pakete jedoch nicht deinstallieren.

%pip uninstall altair vega_datasets --yes

Verwenden des %pip-Befehls zum Installieren von Bibliotheken aus einer requirement.txt-Datei

%pip install -r  /<<path to requirement file>>/requirements.txt

Sitzungsbereichs-Java- oder Scala-Pakete

Sitzungsbezogene Java- oder Scala-Pakete können über die Option %%configure angegeben werden:

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<file system>>@<<storage account>.dfs.core.windows.net/<<path to JAR file>>",
    }
}

Hinweis

  • Wir empfehlen Ihnen, %%configure am Anfang Ihres Notebooks auszuführen. In diesem Dokument finden Sie eine vollständige Liste gültiger Parameter.

Sitzungsbezogene R-Pakete (Vorschau)

In den Azure Synapse Analytics-Pools sind viele populäre R-Bibliotheken bereits enthalten. Sie können auch während Ihrer Apache Spark-Notebooksitzung zusätzliche Bibliotheken von Drittanbietern installieren.

Hinweis

  • Diese Befehle zum Verwalten von R-Bibliotheken werden beim Ausführen von Pipelineaufträgen deaktiviert. Wenn Sie ein Paket innerhalb einer Pipeline installieren möchten, müssen Sie die Funktionen zur Bibliotheksverwaltung auf Poolebene nutzen.
  • Sitzungsbezogene R-Bibliotheken werden automatisch auf den Treiber- und Workerknoten installiert.

Installieren eines Pakets

Sie können eine R-Bibliothek ganz einfach über CRAN installieren.

# Install a package from CRAN
install.packages(c("nycflights13", "Lahman"))

Sie können zudem CRAN-Momentaufnahmen als Repository verwenden, um sicherzustellen, dass immer dieselbe Paketversion heruntergeladen wird.

install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Verwenden von Devtools zum Installieren von Paketen

Die devtools-Bibliothek vereinfacht die Paketentwicklung, um gängige Aufgaben zu beschleunigen. Diese Bibliothek wird in der standardmäßigen Azure Synapse Analytics-Runtime installiert.

Sie können mit devtools eine bestimmte Version einer zu installierenden Bibliothek angeben. Diese Bibliotheken werden auf allen Knoten innerhalb des Clusters installiert.

# Install a specific version. 
install_version("caesar", version = "1.0.0") 

Auf ähnliche Weise können Sie eine Bibliothek direkt aus GitHub installieren.

# Install a GitHub library. 

install_github("jtilly/matchingR") 

Derzeit unterstützt Azure Synapse Analytics die folgenden devtools-Funktionen:

Befehl BESCHREIBUNG
install_github() Installiert ein R-Paket aus GitHub
install_gitlab() Installiert ein R-Paket aus GitLab
install_bitbucket() Installiert ein R-Paket aus BitBucket
install_url() Installiert ein R-Paket über eine beliebige URL
install_git() Installation über ein beliebiges Git-Repository
install_local() Installation über eine lokale Datei auf dem Datenträger
install_version() Installation über eine bestimmte Version aus CRAN

Anzeigen der installierten Bibliotheken

Sie können alle in Ihrer Sitzung installierten Bibliotheken über den Befehl library abfragen.

library()

Mithilfe der Funktion packageVersion können Sie die Version der Bibliothek überprüfen:

packageVersion("caesar")

Entfernen eines R-Pakets aus einer Sitzung

Sie können die Funktion detach verwenden, um eine Bibliothek aus dem Namespace zu entfernen. Diese Bibliotheken verbleiben auf dem Datenträger, bis sie erneut geladen werden.

# detach a library

detach("package: caesar")

Zum Entfernen eines sitzungsbezogenen Pakets aus einem Notebook verwenden Sie den Befehl remove.packages(). Diese Bibliotheksänderung hat keine Auswirkungen auf andere Sitzungen im selben Cluster. Bibliotheken der Standardruntime von Azure Synapse Analytics können nicht durch Benutzer deinstalliert oder entfernt werden.

remove.packages("caesar")

Hinweis

Sie können Kernpakete wie SparkR, SparklyR oder R nicht entfernen.

Sitzungsbezogene R-Bibliotheken und SparkR

Bibliotheken im Notebook-Bereich sind in SparkR-Workern verfügbar.

install.packages("stringr")
library(SparkR)

str_length_function <- function(x) {
  library(stringr)
  str_length(x)
}

docs <- c("Wow, I really like the new light sabers!",
               "That book was excellent.",
               "R is a fantastic language.",
               "The service in this restaurant was miserable.",
               "This is neither positive or negative.")

spark.lapply(docs, str_length_function)

Sitzungsbezogene R-Bibliotheken und SparklyR

Mithilfe von „spark_apply()“ in SparklyR können Sie jedes R-Paket innerhalb von Spark verwenden. In „sparklyr::spark_apply()“ ist das Argument „packages“ standardmäßig auf FALSE festgelegt. Dadurch werden die Bibliotheken in die aktuelle libPaths-Funktion der Worker kopiert, um sie in die Worker zu importieren und dort zu nutzen. Sie können zum Beispiel den folgenden Befehl ausführen, um mit „sparklyr::spark_apply()“ eine Nachricht mit Caesar-Verschlüsselung zu generieren:

install.packages("caesar", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

spark_version <- "3.2"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config)

apply_cases <- function(x) {
  library(caesar)
  caesar("hello world")
}
sdf_len(sc, 5) %>%
  spark_apply(apply_cases, packages=FALSE)

Nächste Schritte