Freigeben über


R-Bibliotheksverwaltung

Bibliotheken stellen wiederverwendbaren Code bereit, den Sie in Ihre Spark-Programme oder -Projekte in Microsoft Fabric einbinden können.

Microsoft Fabric unterstützt eine R-Runtime mit vielen beliebten Open-Source-Paketen für R, einschließlich TidyVerse, die bereits vorinstalliert sind. Wenn eine Spark-Instanz gestartet wird, sind diese Bibliotheken automatisch enthalten und sofort in Notebooks oder Spark-Auftragsdefinitionen verfügbar.

Es kann aus verschiedenen Gründen vorkommen, dass Sie Ihre R-Bibliotheken aktualisieren müssen. Möglicherweise wurde für eine Ihrer Kernabhängigkeiten eine neue Version veröffentlicht, oder Ihr Team hat ein benutzerdefiniertes Paket erstellt, das Sie in Ihren Spark-Clustern benötigen.

Es gibt zwei Arten von Bibliotheken, die Sie je nach Szenario einschließen sollten:

  • Feedbibliothek sind Bibliotheken, die sich in öffentlichen Quellen oder Repositorys befinden, zum Beispiel CRAN oder GitHub.

  • Benutzerdefinierte Bibliotheken sind der Code, der von Ihnen oder Ihrer Organisation erstellt wurde. .tar.gz kann über Bibliotheksverwaltungsportale verwaltet werden.

In Microsoft Fabric werden Pakete auf zwei Ebenen installiert:

  • Umgebung: Verwalten von Bibliotheken über eine Umgebung , um den gleichen Satz von Bibliotheken für mehrere Notebooks oder Aufträge wiederzuverwenden.

  • Sitzung: Bei einer Installation auf Sitzungsebene wird eine Umgebung für eine bestimmte Notebooksitzung erstellt. Änderungen an Bibliotheken auf Sitzungsebene werden zwischen Sitzungen nicht beibehalten.

Zusammenfassung der aktuellen Verwaltungsverhalten von R-Bibliotheken:

Bibliothekstyp Installation der Umgebung Installation auf Sitzungsebene
R Feed (CRAN) Nicht unterstützt Unterstützt
Benutzerdefinierte R-Bibliotheken Unterstützt Unterstützt

Voraussetzungen

R-Bibliotheken auf Sitzungsebene

Bei interaktiver Datenanalyse oder maschinellem Lernen probieren Sie ggf. neuere Pakete aus, oder Sie benötigen Pakete, die derzeit nicht in Ihrem Arbeitsbereich verfügbar sind. Anstatt die Arbeitsbereicheinstellungen zu aktualisieren, können Sie jetzt sitzungsbezogene Pakete verwenden, um Sitzungsabhängigkeiten hinzuzufügen, zu verwalten und zu aktualisieren.

  • 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 auf Basis der zugrunde liegenden Bibliotheken auf Runtime- und Poolebene installiert.
  • Notebookbibliotheken besitzen die höchste Priorität.
  • Sitzungsbezogene R-Bibliotheken werden nicht sitzungsübergreifend beibehalten. Diese Bibliotheken werden am Anfang jeder Sitzung installiert, wenn die zugehörigen Installationsbefehle ausgeführt werden.
  • Sitzungsbezogene R-Bibliotheken werden automatisch auf den Treiber- und Workerknoten installiert.

Hinweis

Die 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 Arbeitsbereichsebene nutzen.

Installieren von R-Paketen über CRAN

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 a package from CRAN snapsho
install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Installieren von R-Paketen mithilfe von devtools

Die devtools-Bibliothek vereinfacht die Paketentwicklung, um gängige Aufgaben zu beschleunigen. Diese Bibliothek wird in der Microsoft Fabric-Standardruntime 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 Microsoft Fabric 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

Installieren von benutzerdefinierten R-Bibliotheken

Um eine benutzerdefinierte Bibliothek auf Sitzungsebene zu verwenden, müssen Sie sie zuerst in ein angefügtes Lakehouse hochladen.

  1. Wählen Sie auf der linken Seite Hinzufügen aus, um ein vorhandenes Lakehouse hinzuzufügen oder ein Lakehouse zu erstellen.

    Screenshot: Hinzufügen eines Lakehouse zu Ihrem Notebook

  2. Um diesem Lakehouse Dateien hinzuzufügen, wählen Sie Ihren Arbeitsbereich und dann das Lakehouse aus.

    Screenshot: Navigation zu Ihrem Lakehouse, um Dateien hinzuzufügen

  3. Klicken Sie mit der rechten Maustaste, oder wählen Sie „...“ neben Dateien aus, um Ihre TAR.GZ-Datei hochzuladen.

    Screenshot: Hochladen Ihrer Datei in den Ordner „Dateien“ des Lakehouse

  4. Wechseln Sie nach dem Hochladen zurück zu Ihrem Notebook. Verwenden Sie den folgenden Befehl, um die benutzerdefinierte Bibliothek in Ihrer Sitzung zu installieren:

    install.packages("filepath/filename.tar.gz", repos = NULL, type = "source")
    

Anzeigen der installierten Bibliotheken

Fragen Sie alle in Ihrer Sitzung installierten Bibliotheken über den Befehl library ab.

# query all the libraries installed in current session
library()

Verwenden Sie die Funktion packageVersion, um die Version der Bibliothek zu überprüfen:

# check the package version
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 Microsoft Fabric können nicht durch Benutzer*innen deinstalliert oder entfernt werden.

Hinweis

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

remove.packages("caesar")

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 alle R-Pakete 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 beispielsweise eine mit Caesar verschlüsselte Nachricht mit sparklyr::spark_apply() generieren, indem Sie Folgendes ausführen:

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

spark_version <- sparkR.version()
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)

Weitere Informationen zu den R-Funktionen: