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.
Hinweis
In diesem Artikel wird das Databricks SDK für R von Databricks Labs behandelt, das sich im experimentellen Zustand befindet. Verwenden Sie die Registerkarte Probleme im Repository von Databricks SDK für R auf GitHub, um Feedback zu geben, Fragen zu stellen und Probleme zu melden.
In diesem Artikel erfahren Sie, wie Sie Azure Databricks-Vorgänge in Azure Databricks-Arbeitsbereichen mit dem Databricks SDK für R automatisieren. Dieser Artikel ergänzt das Databricks SDK für R-Dokumentation.
Hinweis
Das Databricks SDK für R unterstützt die Automatisierung von Vorgängen in Azure Databricks-Konten nicht. Verwenden Sie zum Aufrufen von Vorgängen auf Kontoebene ein anderes Databricks SDK, z. B.:
Bevor Sie beginnen
Zur Verwendung des Databricks SDK für R muss Ihr Entwicklungscomputer die folgenden Voraussetzungen erfüllen:
Ein persönliches Zugriffstoken von Azure Databricks für den Azure Databricks-Zielarbeitsbereich, den Sie automatisieren möchten.
Hinweis
Das Databricks SDK für R unterstützt nur die Authentifizierung mit persönlichen Zugriffstoken von Azure Databricks.
R und optional eine R-kompatible integrierte Entwicklungsumgebung (IDE). Databricks empfiehlt RStudio Desktop und verwendet es in den Anweisungen dieses Artikels.
Erste Schritte mit dem Databricks SDK für R
Stellen Sie Ihre Azure Databricks-Arbeitsbereichs-URL und das persönliche Zugriffstoken für die Skripts Ihres R-Projekts zur Verfügung. Sie können z. B. folgendes zu der Datei eines R-Projekts
.Renviron
hinzufügen. Ersetzen Sie<your-workspace-url>
durch Ihre arbeitsbereichsspezifische URL, z. B.https://adb-1234567890123456.7.azuredatabricks.net
. Ersetzen Sie<your-personal-access-token>
durch Ihr persönliches Azure Databricks-Zugriffstoken, z. B.dapi12345678901234567890123456789012
.DATABRICKS_HOST=<your-workspace-url> DATABRICKS_TOKEN=<your-personal-access-token>
Führen Sie zum Erstellen eines persönlichen Azure Databricks-Zugriffstokens die Schritte unter Azure Databricks persönliche Zugriffstoken für Arbeitsbereichsbenutzer aus.
Weitere Möglichkeiten zum Bereitstellen der URL ihres Azure Databricks-Arbeitsbereichs und des persönlichen Zugriffstokens finden Sie unter Authentifizierung im Databricks SDK für R-Repository in GitHub.
Wichtig
Fügen Sie keine
.Renviron
-Dateien zu Versionskontrollsystemen hinzu, da dies das Risiko birgt, dass sensible Informationen, wie z. B. persönliche Azure Databricks-Zugriffstoken, preisgegeben werden.Installieren Sie das Databricks SDK für R-Paket. Führen Sie beispielsweise in RStudio Desktop in der Konsolenansicht (Ansicht > Fokus auf Konsole verschieben) die folgenden Befehle nacheinander aus:
install.packages("devtools") library(devtools) install_github("databrickslabs/databricks-sdk-r")
Hinweis
Das Databricks SDK für R-Paket ist in CRAN nicht verfügbar.
Fügen Sie Code hinzu, um auf das Databricks SDK für R zu verweisen und alle Cluster in Ihrem Azure Databricks-Arbeitsbereich auflisten zu können. In der Datei eines Projekts
main.r
kann der Code z. B. wie folgt aussehen:require(databricks) client <- DatabricksClient() list_clusters(client)[, "cluster_name"]
Führen Sie Ihr Skript aus. Klicken Sie z. B. in RStudio Desktop im Skript-Editor mit der aktiven Datei eines Projekts
main.r
auf Ausführen > oder Ausführen mit Echo.Die Liste der Cluster wird angezeigt. In RStudio Desktop befindet sich dies beispielsweise in der Konsolenansicht.
Codebeispiele
Die folgenden Codebeispiele veranschaulichen, wie Sie das Databricks SDK für R zum Erstellen und Löschen von Clustern und zum Erstellen von Aufträgen verwenden.
Erstellen eines Clusters
In diesem Codebeispiel wird ein Cluster mit der angegebenen Databricks Runtime-Version und dem angegebenen Clusterknotentyp erstellt. Dieser Cluster umfasst einen Worker, und der Cluster wird nach 15 Minuten Leerlauf automatisch beendet.
require(databricks)
client <- DatabricksClient()
response <- create_cluster(
client = client,
cluster_name = "my-cluster",
spark_version = "12.2.x-scala2.12",
node_type_id = "Standard_DS3_v2",
autotermination_minutes = 15,
num_workers = 1
)
# Get the workspace URL to be used in the following results message.
get_client_debug <- strsplit(client$debug_string(), split = "host=")
get_host <- strsplit(get_client_debug[[1]][2], split = ",")
host <- get_host[[1]][1]
# Make sure the workspace URL ends with a forward slash.
if (endsWith(host, "/")) {
} else {
host <- paste(host, "/", sep = "")
}
print(paste(
"View the cluster at ",
host,
"#setting/clusters/",
response$cluster_id,
"/configuration",
sep = "")
)
Dauerhaftes Löschen eines Clusters
In diesem Codebeispiel wird der Cluster mit der angegebenen Cluster-ID dauerhaft aus dem Arbeitsbereich gelöscht.
require(databricks)
client <- DatabricksClient()
cluster_id <- readline("ID of the cluster to delete (for example, 1234-567890-ab123cd4):")
delete_cluster(client, cluster_id)
Auftrag erstellen
In diesem Codebeispiel wird ein Azure Databricks-Auftrag erstellt, der zum Ausführen des angegebenen Notebooks auf dem angegebenen Cluster verwendet werden kann. Wenn dieser Code ausgeführt wird, ruft er den Pfad des vorhandenen Notizbuchs, die vorhandene Cluster-ID und die zugehörigen Auftragseinstellungen vom Benutzer auf der Konsole ab.
require(databricks)
client <- DatabricksClient()
job_name <- readline("Some short name for the job (for example, my-job):")
description <- readline("Some short description for the job (for example, My job):")
existing_cluster_id <- readline("ID of the existing cluster in the workspace to run the job on (for example, 1234-567890-ab123cd4):")
notebook_path <- readline("Workspace path of the notebook to run (for example, /Users/someone@example.com/my-notebook):")
task_key <- readline("Some key to apply to the job's tasks (for example, my-key):")
print("Attempting to create the job. Please wait...")
notebook_task <- list(
notebook_path = notebook_path,
source = "WORKSPACE"
)
job_task <- list(
task_key = task_key,
description = description,
existing_cluster_id = existing_cluster_id,
notebook_task = notebook_task
)
response <- create_job(
client,
name = job_name,
tasks = list(job_task)
)
# Get the workspace URL to be used in the following results message.
get_client_debug <- strsplit(client$debug_string(), split = "host=")
get_host <- strsplit(get_client_debug[[1]][2], split = ",")
host <- get_host[[1]][1]
# Make sure the workspace URL ends with a forward slash.
if (endsWith(host, "/")) {
} else {
host <- paste(host, "/", sep = "")
}
print(paste(
"View the job at ",
host,
"#job/",
response$job_id,
sep = "")
)
Protokollierung
Sie können das beliebte logging
Paket zum Protokollieren von Nachrichten verwenden. Dieses Paket bietet Unterstützung für mehrere Protokollierungsebenen und benutzerdefinierte Protokollformate. Sie können dieses Paket verwenden, um Nachrichten in der Konsole oder in einer Datei zu protokollieren. Gehen Sie wie folgt vor, um Nachrichten zu protokollieren:
Installieren Sie das
logging
-Paket. Führen Sie beispielsweise in RStudio Desktop in der Konsolenansicht (Ansicht > Fokus auf Konsole verschieben) die folgenden Befehle aus:install.packages("logging") library(logging)
Initialisieren Sie das Protokollierungspaket, legen Sie fest, wo die Nachrichten protokolliert werden sollen, und setzen Sie die Protokollierungsebene. Der folgende Code protokolliert beispielsweise alle
ERROR
Nachrichten und darunter in derresults.log
Datei.basicConfig() addHandler(writeToFile, file="results.log") setLevel("ERROR")
Protokollieren Sie Nachrichten nach Bedarf. Der folgende Code protokolliert beispielsweise Fehler, wenn der Code die Namen der verfügbaren Cluster nicht authentifizieren oder auflisten kann.
require(databricks) require(logging) basicConfig() addHandler(writeToFile, file="results.log") setLevel("ERROR") tryCatch({ client <- DatabricksClient() }, error = function(e) { logerror(paste("Error initializing DatabricksClient(): ", e$message)) return(NA) }) tryCatch({ list_clusters(client)[, "cluster_name"] }, error = function(e) { logerror(paste("Error in list_clusters(client): ", e$message)) return(NA) })
Testen
Um Ihren Code zu testen, können Sie R-Testframeworks wie testthat verwenden. Um Ihren Code unter simulierten Bedingungen zu testen, ohne Azure Databricks-REST-API-Endpunkte aufzurufen oder den Status Ihrer Azure Databricks-Konten oder -Arbeitsbereiche zu ändern, können Sie R-Modellbibliotheken wie mockery verwenden.
Angenommen, die folgende Datei mit dem Namen helpers.r
enthält eine createCluster
-Funktion, die Informationen über den neuen Cluster zurückgibt:
library(databricks)
createCluster <- function(
databricks_client,
cluster_name,
spark_version,
node_type_id,
autotermination_minutes,
num_workers
) {
response <- create_cluster(
client = databricks_client,
cluster_name = cluster_name,
spark_version = spark_version,
node_type_id = node_type_id,
autotermination_minutes = autotermination_minutes,
num_workers = num_workers
)
return(response)
}
Und die folgende Datei mit dem Namen main.R
, die die createCluster
Funktion aufruft:
library(databricks)
source("helpers.R")
client <- DatabricksClient()
# Replace <spark-version> with the target Spark version string.
# Replace <node-type-id> with the target node type string.
response = createCluster(
databricks_client = client,
cluster_name = "my-cluster",
spark_version = "<spark-version>",
node_type_id = "<node-type-id>",
autotermination_minutes = 15,
num_workers = 1
)
print(response$cluster_id)
Die folgende Datei mit dem Namen test-helpers.py
testet, ob die createCluster
Funktion die erwartete Antwort zurückgibt. Anstatt einen Cluster im Zielarbeitsbereich zu erstellen, simuliert dieser Test ein DatabricksClient
Objekt, definiert die Einstellungen des simulierten Objekts und übergibt dann das simulierte Objekt an die createCluster
Funktion. Der Test überprüft dann, ob die Funktion die erwartete ID des neuen simulierten Clusters zurückgibt.
# install.packages("testthat")
# install.pacakges("mockery")
# testthat::test_file("test-helpers.R")
lapply(c("databricks", "testthat", "mockery"), library, character.only = TRUE)
source("helpers.R")
test_that("createCluster mock returns expected results", {
# Create a mock response.
mock_response <- list(cluster_id = "abc123")
# Create a mock function for create_cluster().
mock_create_cluster <- mock(return_value = mock_response)
# Run the test with the mock function.
with_mock(
create_cluster = mock_create_cluster,
{
# Create a mock Databricks client.
mock_client <- mock()
# Call the function with the mock client.
# Replace <spark-version> with the target Spark version string.
# Replace <node-type-id> with the target node type string.
response <- createCluster(
databricks_client = mock_client,
cluster_name = "my-cluster",
spark_version = "<spark-version>",
node_type_id = "<node-type-id>",
autotermination_minutes = 15,
num_workers = 1
)
# Check that the function returned the correct mock response.
expect_equal(response$cluster_id, "abc123")
}
)
})
Zusätzliche Ressourcen
Weitere Informationen finden Sie unter: