Azure Databricks für R-Entwickler

Dieser Abschnitt enthält einen Leitfaden für die Entwicklung von Notebooks und Aufträgen in Azure Databricks mithilfe der Sprache „R“.

Ein grundlegender Workflow für die ersten Schritte ist:

  1. Code importieren: Importieren Sie entweder Ihren eigenen Code aus Dateien oder Git-Repositorys oder, versuchen Sie es mit einem der unten aufgeführten Tutorials. Databricks empfiehlt das Lernen mithilfe interaktiver Azure Databricks-Notebooks.
  2. Ihren Code auf einem Cluster ausführen: Erstellen Sie entweder einen eigenen Cluster, oder stellen Sie sicher, dass Sie über die Berechtigung verfügen, einen freigegebenen Cluster zu verwenden. Fügen Sie Ihr Notebook in den Cluster ein, und führen Sie das Notebook aus.

Darüber hinaus können Sie zu spezifischeren Themen verzweigen:

Tutorials

In den folgenden Tutorials finden Sie Beispielcode und Notebooks, anhand derer Sie gängige Workflows kennenlernen können. Eine Anleitung zum Importieren von Notebookbeispielen in Ihren Arbeitsbereich finden Sie unter Importieren eines Notebooks.

Verweis

In den folgenden Unterabschnitten finden Sie die wichtigsten Features und Tipps, die Ihnen den Einstieg in die Entwicklung in Azure Databricks mit R erleichtern.

Azure Databricks unterstützt zwei APIs, die eine R-Schnittstelle für Apache Spark bereitstellen: SparkR und sparklyr.

SparkR

Diese Artikel enthalten eine Einführung und eine Referenz zu SparkR. SparkR ist eine R-Schnittstelle zu Apache Spark, die eine verteilte Datenrahmenimplementierung bereitstellt. SparkR unterstützt Vorgänge wie die Auswahl, Filterung und Aggregation (ähnlich wie R-Datenrahmen), aber in großen Datasets.

sparklyr

Der folgende Artikel enthält eine Einführung in Sparklyr. sparklyr ist eine R-Schnittstelle zu Apache Spark, die ähnliche Funktionen wie dplyr, broom und DBI bereitstellt.

Vergleich von SparkR und Sparklyr

In diesem Artikel werden wichtige Ähnlichkeiten und Unterschiede zwischen SparkR und Sparklyr erläutert.

Arbeiten mit DataFrames und Tabellen mit SparkR und Sparklyr

In diesem Artikel wird erläutert, wie Sie R, SparkR, Sparklyr und dplyr verwenden, um mit R-data.frames, Spark DataFrames und Spark-Tabellen in Azure Databricks zu arbeiten.

Verwalten von Code mit Notebooks und Databricks Git-Ordnern

Azure Databricks-Notebooks unterstützen R. Diese Notebooks bieten ähnliche Funktionen wie Jupyter, jedoch mit Ergänzungen wie integrierten Visualisierungen unter Verwendung von Big Data, Apache Spark-Integrationen für das Debugging und die Leistungsüberwachung sowie MLflow-Integrationen für die Überwachung von Machine Learning-Experimenten. Beginnen Sie mit dem Importieren eines Notebooks. Sobald Sie Zugriff auf einen Cluster haben, können Sie ein Notebook an den Cluster anfügen und das Notebook ausführen.

Mit Azure Databricks Git-Ordnern können Benutzer Notebooks und andere Dateien mit Git-Repositorys synchronisieren. Azure Databricks Git-Ordner helfen bei der Versionsverwaltung von Code und der Zusammenarbeit und können den Import eines vollständigen Repositorys von Code in Azure Databricks, die Anzeige früherer Notebook-Versionen und die Integration mit der IDE-Entwicklung vereinfachen. Beginnen Sie mit dem Klonen eines Remote-Git-Repositorys. Sie können dann Notebooks mit dem Repository-Klon öffnen oder erstellen, das Notebook an einen Cluster anfügen und das Notebook ausführen.

Cluster

Azure Databricks Compute bieten Computeverwaltung sowohl für einzelne Knoten als auch für große Cluster. Sie können die Clusterhardware und die Bibliotheken Ihren Anforderungen entsprechend anpassen. Wissenschaftliche Fachkräfte für Daten beginnen ihre Arbeit in der Regel entweder mit dem Erstellen eines Clusters oder mit der Verwendung eines vorhandenen freigegebenen Clusters. Sobald Sie Zugriff auf einen Cluster haben, können Sie ein Notebook an den Cluster anfügen oder einen Auftrag im Cluster ausführen.

R mit einzelnem Knoten und verteiltes R

Azure Databricks-Cluster bestehen aus einem Apache Spark-Treiberknoten und 0 oder mehr Spark-Workerknoten (auch als Executor bezeichnet). Der Treiberknoten verwaltet den angefügten Notebookstatus, verwaltet den SparkContext, interpretiert Notebook- und Bibliotheksbefehle und führt den Spark-Master aus, der anhand von Spark-Executors koordiniert. Workerknoten führen die Spark-Executors aus, einen Spark-Executor pro Workerknoten.

Ein Cluster mit einem einzelnen Knoten verfügt über einen Treiberknoten und keine Workerknoten. Spark wird dabei im lokalen Modus ausgeführt wird, um den Zugriff auf Tabellen zu unterstützen, die von Azure Databricks verwaltet werden. Einzelknotencluster unterstützen RStudio, Notebooks und Bibliotheken und sind nützlich für R-Projekte, die nicht von Spark für Big Data oder die Parallelverarbeitung abhängig sind. Siehe Einzelknoten- oder Mehrfachknoten-Berechnungen.

Für Datengrößen, die R nur schwer verarbeiten kann (viele Gigabyte oder Petabyte), sollten Sie stattdessen Cluster mit mehreren Knoten oder verteilte Cluster verwenden. Verteilte Cluster verfügen über einen Treiberknoten und einen oder mehrere Workerknoten. Verteilte Cluster unterstützen nicht nur RStudio, Notebooks und Bibliotheken, sondern R-Pakete wie SparkR und sparklyr, die eindeutig für die Verwendung verteilter Cluster über den SparkContext vorgesehen sind. Diese Pakete stellen vertraute SQL- und DataFrame-APIs bereit, die das Zuweisen und Ausführen verschiedener Spark-Aufgaben und -Befehle über Workerknoten hinweg ermöglichen. Weitere Informationen zu sparklyr und SparkR finden Sie unter Vergleichen von SparkR und sparklyr.

Einige SparkR- und sparklyr-Funktionen, die die Verteilung verwandter Aufgaben auf Workerknoten besonders ausnutzen, umfassen Folgendes:

  • sparklyr::spark_apply: Führt beliebigen R-Code im großen Stil innerhalb eines Clusters aus. Dies ist besonders nützlich bei der Verwendung von Funktionen, die nur in R oder in R-Paketen verfügbar sind, die wiederum weder in Apache Spark noch in anderen Spark-Paketen verfügbar sind.
  • SparkR::d apply: Wendet die angegebene Funktion auf jede Partition eines SparkDataFrame an.
  • SparkR::d applyCollect: Wendet die angegebene Funktion auf jede Partition eines SparkDataFrame an und sammelt und gibt die Ergebnisse als data.frame an R zurück.
  • SparkR::gapply: Gruppiert einen SparkDataFrame mithilfe der angegebenen Spalten und wendet die angegebene R-Funktion auf jede Gruppe an.
  • SparkR::gapplyCollect: Gruppiert einen SparkDataFrame mithilfe der angegebenen Spalten, wendet die angegebene R-Funktion auf jede Gruppe an und sammelt und gibt das Ergebnis als data.frame an R zurück.
  • SparkR::spark.lapply: Führt die angegebene Funktion über eine Liste von Elementen aus und verteilt die Berechnungen mit Spark.

Beispiele finden Sie im Notebook Verteiltes R: Benutzerdefinierte Funktionen in Spark.

Databricks-Containerdienste

Mit Databricks-Containerdiensten können Sie beim Erstellen eines Clusters ein Docker-Image angeben. Databricks stellt das databricksruntime/rbase-Basisimage auf Docker Hub als Beispiel zum Starten eines Databricks-Containerdienstclusters mit R-Unterstützung bereit. Weitere Informationen finden Sie auch in der Dockerfile-Datei, die zum Generieren dieses Basisimages verwendet wird.

Bibliotheken

Azure Databricks-Cluster verwenden die Databricks Runtime-Komponente, die viele beliebte Bibliotheken vorgefertigt zur Verfügung stellt, darunter Apache Spark, Delta Lake und mehr. Sie können auch zusätzliche Drittanbieter- oder benutzerdefinierte R-Pakete in Bibliotheken installieren, um sie mit Notebooks und Jobs zu verwenden.

Beginnen Sie mit den Standardbibliotheken in Versionshinweise zu Databricks Runtime-Versionen und -Kompatibilität. Verwenden Sie Databricks Runtime für Machine Learning für Workloads des maschinellen Lernens. Eine vollständige Liste der vorinstallierten Bibliotheken finden Sie im Abschnitt „Installierte R-Bibliotheken“ für die Databricks Runtime-Zielkomponente unter Versionshinweise zu Databricks Runtime-Versionen und -Kompatibilität.

Sie können Ihre Umgebung anpassen, indem Sie Notebook-bezogene R-Bibliotheken verwenden, mit denen Sie Ihre Notebook- oder Auftragsumgebung mit Bibliotheken aus CRAN oder anderen Repositories ändern können. Dazu können Sie die bekannte install.packages-Funktion von utils verwenden. Das folgende Beispiel installiert das Arrow R-Paket aus dem standardmäßigen CRAN-Repository:

install.packages("arrow")

Wenn Sie eine ältere Version als die in der Databricks-Runtime enthaltene benötigen, können Sie ein Notebook verwenden, um die install_version-Funktion von devtools auszuführen. Das folgende Beispiel installiert dplyr Version 0.7.4 von CRAN:

require(devtools)

install_version(
  package = "dplyr",
  version = "0.7.4",
  repos   = "http://cran.r-project.org"
)

Auf diese Weise installierte Pakete sind in einem Cluster verfügbar. Sie gelten für den Benutzer, der sie installiert. Dadurch können Sie mehrere Versionen desselben Pakets auf demselben Computer installieren, ohne Paketkonflikte zu verursachen.

Sie können bei Bedarf weitere Bibliotheken als Cluster-Bibliotheken installieren, beispielsweise von CRAN. Klicken Sie dazu in der Benutzeroberfläche des Clusters auf Bibliotheken> neuen >CRAN installieren und geben Sie den Namen der Bibliothek an. Dieser Ansatz ist besonders wichtig, wenn Sie benutzerdefinierte Funktionen mit SparkR oder Sparklyr aufrufen möchten.

Weitere Informationen finden Sie unter Bibliotheken.

So installieren Sie ein benutzerdefiniertes Paket in einer Bibliothek:

  1. Erstellen Sie Ihr benutzerdefiniertes Paket über die Befehlszeile oder mithilfe von RStudio.

  2. Kopieren Sie die benutzerdefinierte Paketdatei von Ihrem Entwicklungscomputer in Ihren Azure Databricks-Arbeitsbereich. Optionen finden Sie unter Bibliotheken.

  3. Installieren Sie das benutzerdefinierte Paket in einer Bibliothek, indem Sie install.packages ausführen.

    Zum Beispiel von einem Notebook in Ihrem Workspace:

    install.packages(
      pkgs  = "/path/to/tar/file/<custom-package>.tar.gz",
      type  = "source",
      repos = NULL
    )
    

    Oder:

    %sh
    R CMD INSTALL /path/to/tar/file/<custom-package>.tar.gz
    

Nachdem Sie ein benutzerdefiniertes Paket in einer Bibliothek installiert haben, fügen Sie die Bibliothek dem Suchpfad hinzu und laden dann die Bibliothek mit einem einzigen Befehl.

Beispiel:

# Add the library to the search path one time.
.libPaths(c("/path/to/tar/file/", .libPaths()))

# Load the library. You do not need to add the library to the search path again.
library(<custom-package>)

Um ein benutzerdefiniertes Paket als Bibliothek auf jedem Knoten in einem Cluster zu installieren, müssen Sie Cluster-Knoten-Initialisierungsskripts verwenden.

Visualisierungen

R-Notebooks für Azure Databricks unterstützen verschiedene Arten von Visualisierungen über die Funktion display.

Aufträge

Sie können R-Workloads als geplantes oder ausgelöstes Notebook zum Erstellen und Ausführen von Azure Databricks-Aufträgen in Azure Databricks automatisieren.

  • Ausführliche Informationen zum Erstellen eines Auftrags über die Benutzeroberfläche finden Sie unter Erstellen eines Auftrags.
  • Mithilfe der Auftrags-API können Sie Aufträge erstellen, bearbeiten und löschen.
  • Die Databricks-CLI bietet eine komfortable Befehlszeilenschnittstelle zum Aufrufen der Auftrags-API.

Machine Learning

Databricks unterstützt eine Vielzahl von Workloads für maschinelles Lernen (ML), einschließlich traditionellem ML für Tabellendaten, Deep Learning für maschinelles Sehen und die Verarbeitung natürlicher Sprache, Empfehlungssysteme, Graphanalysen und mehr. Allgemeine Informationen zum maschinellen Lernen auf Azure Databricks finden Sie unter Databricks Runtime für Machine Learning.

Für ML-Algorithmen können Sie vorinstallierte Bibliotheken in Databricks Runtime für Machine Learning verwenden. Sie können auch benutzerdefinierte Bibliotheken installieren.

Für Vorgänge des maschinellen Lernens (MLOps) bietet Azure Databricks einen verwalteten Dienst für die Open-Source-Bibliothek MLFlow. Mit der MLflow-Nachverfolgung können Sie die Modellentwicklung aufzeichnen und Modelle in wiederverwendbaren Formaten speichern. Sie können die MLflow-Modellregistrierung verwenden, um die Heraufstufung von Modellen in Richtung Produktion zu verwalten und zu automatisieren. Aufträge und Modellbereitstellung ermöglichen das Hosten von Modellen als Batchaufträge und von Streamingaufträgen und als REST-Endpunkte. Weitere Informationen und Beispiele finden Sie unter ML-Lebenszyklusverwaltung mit MLflow oder den Dokumenten zur MLflow-R-API.

R-Entwickertools

Zusätzlich zu Azure Databricks-Notebooks können Sie auch die folgenden Tools für R-Entwickler verwenden:

Anpassung der R-Sitzung

In Databricks Runtime 12.2 LTS und höher können R-Sitzungen mithilfe websiteweiter Profildateien (.Rprofile) angepasst werden. R-Notebooks beziehen die Datei während des Starts als R-Code. Suchen Sie den Wert von R_HOME, und ändern Sie $R_HOME/etc/Rprofile.site, um die Datei zu ändern. Beachten Sie, dass Databricks die Konfiguration in der Datei hinzugefügt hat, um sicherzustellen, dass das Hosten von RStudio in Azure Databricks ordnungsgemäß funktioniert. Wenn Sie eines der Elemente entfernen, funktioniert RStudio möglicherweise nicht wie erwartet.

In Databricks Runtime 11.3 LTS und früher kann dieses Verhalten durch Festlegen der Umgebungsvariable DATABRICKS_ENABLE_RPROFILE=true aktiviert werden.

Zusätzliche Ressourcen