Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Feljegyzés
Ez a cikk a Databricks Labs R-hez készült Databricks SDK-ját ismerteti, amely kísérleti állapotban van. Ha visszajelzést szeretne küldeni, kérdéseket tehet fel és jelentheti a problémákat, használja a Problémák lapot a Databricks SDK for R-adattárban a GitHubon.
Ebből a cikkből megtudhatja, hogyan automatizálhatja az Azure Databricks-műveleteket az Azure Databricks-munkaterületeken az R-hez készült Databricks SDK-val. Ez a cikk kiegészíti a Databricks SDK for R dokumentációját.
Feljegyzés
Az R-hez készült Databricks SDK nem támogatja az Azure Databricks-fiókok műveleteinek automatizálását. Fiókszintű műveletek meghívásához használjon egy másik Databricks SDK-t, például:
Requirements
A Databricks SDK for R használatához a fejlesztőgépnek a következőkkel kell rendelkeznie:
Egy Azure Databricks személyes hozzáférési jogkivonat a megcélzott Azure Databricks-munkaterülethez, amelyet automatizálni szeretne.
Feljegyzés
Az R-hez készült Databricks SDK csak az Azure Databricks személyes hozzáférési jogkivonat-hitelesítését támogatja.
R, és opcionálisan egy R-kompatibilis integrált fejlesztési környezet (IDE). A Databricks az RStudio Desktop használatát javasolja a jelen cikk utasításaiban.
Ismerkedés az R-hez készült Databricks SDK-val
Tegye elérhetővé az Azure Databricks-munkaterület URL-címét és személyes hozzáférési jogkivonatát az R-projekt szkriptjei számára. Hozzáadhatja például az alábbiakat egy R-projekt fájljába
.Renviron. Cserélje le a<your-workspace-url>saját munkaterület URL-jére, például ahttps://adb-1234567890123456.7.azuredatabricks.net. Cserélje le a<your-personal-access-token>-t az Azure Databricks személyes hozzáférési tokenjére, példáuldapi12345678901234567890123456789012.DATABRICKS_HOST=<your-workspace-url> DATABRICKS_TOKEN=<your-personal-access-token>Az Azure Databricks személyes hozzáférési jogkivonatának létrehozásához kövesse a munkaterület-felhasználók személyes hozzáférési jogkivonatainak létrehozása című szakasz lépéseit.
További információért az Azure Databricks munkaterület URL-címének és személyes hozzáférési tokenének megadásáról, tekintse meg a Hitelesítés részt a GitHubon található Databricks SDK for R adattárban.
Fontos
Ne adjon hozzá
.Renvironfájlokat a verziókövetési rendszerekhez, mivel ez bizalmas információk, például az Azure Databricks személyes hozzáférési jogkivonatainak felfedésével jár.Telepítse a Databricks SDK for R csomagot. Az RStudio Desktopban például a Konzol nézetben (Fókusz > áthelyezése konzolra) futtassa a következő parancsokat egyenként:
install.packages("devtools") library(devtools) install_github("databrickslabs/databricks-sdk-r")Feljegyzés
A Databricks SDK for R csomag nem érhető el a CRAN-on.
Adjon hozzá kódot az R-hez készült Databricks SDK-ra való hivatkozáshoz és az Azure Databricks-munkaterület összes fürtjének listázásához. Egy projekt fájljában
main.rpéldául a kód a következő lehet:require(databricks) client <- DatabricksClient() list_clusters(client)[, "cluster_name"]Futtassa a szkriptet. Az RStudio Desktopban például az aktív projektfájlt
main.rtartalmazó szkriptszerkesztőben kattintson a Forrás > vagyForrás gombra az Echo használatával.Megjelenik a klaszterek listája. Az RStudio Desktopban például ez a Konzol nézetben található.
Kódpéldák
Az alábbi példakód bemutatja, hogyan használható a Databricks SDK for R fürtök létrehozására és törlésére, valamint feladatok létrehozására.
Fürt létrehozása
Ez a példakód létrehoz egy fürtöt a megadott Databricks Runtime-verzióval és fürtcsomóponttípussal. Ennek a klaszternek egy munkavállalója van, és a klaszter 15 perc tétlenség után automatikusan leáll.
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 = "")
)
A fürt végleges törlése
Ez a példakód véglegesen törli a munkaterületről a megadott azonosítójú klasztert.
require(databricks)
client <- DatabricksClient()
cluster_id <- readline("ID of the cluster to delete (for example, 1234-567890-ab123cd4):")
delete_cluster(client, cluster_id)
Feladat létrehozása
Ez a példakód létrehoz egy Azure Databricks-feladatot, amely a megadott jegyzetfüzet futtatására használható a megadott fürtön. A kód futtatásakor lekéri a meglévő jegyzetfüzet elérési útját, a meglévő fürtazonosítót és a kapcsolódó feladatbeállításokat a konzol felhasználójától.
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 = "")
)
Naplózás
A népszerű logging csomag segítségével naplózhatja az üzeneteket. Ez a csomag több naplózási szinthez és egyéni naplóformátumhoz nyújt támogatást. Ezzel a csomagval üzeneteket naplózhat a konzolra vagy egy fájlba. Az üzenetek naplózásához tegye a következőket:
Telepítse az
loggingcsomagot. Az RStudio Desktopban például a Konzol nézetben (Fókusz > áthelyezése konzolra) futtassa a következő parancsokat:install.packages("logging") library(logging)Indítsa el a naplózási csomagot, adja meg, hogy hol naplózza az üzeneteket, és állítsa be a naplózási szintet. Az alábbi kód például az összes
ERRORüzenetet naplózza aresults.logfájlba.basicConfig() addHandler(writeToFile, file="results.log") setLevel("ERROR")Szükség szerint naplózza az üzeneteket. Az alábbi példa kód naplózza a hibákat, ha a kód nem képes hitelesíteni vagy listázni a rendelkezésre álló klaszterek neveit.
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) })
Tesztelés
A kód teszteléséhez használhat R tesztelési keretrendszereket, például a testthatot. Ha szimulált körülmények között szeretné tesztelni a kódot az Azure Databricks REST API-végpontok meghívása vagy az Azure Databricks-fiókok vagy -munkaterületek állapotának módosítása nélkül, használhat R-gúnykódtárakat, például a mockeryt.
Például, egy helpers.r nevű fájl, amely tartalmaz egy createCluster függvényt, ami az új fürtre vonatkozó információkat ad vissza:
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)
}
És a következő fájl, amelynek neve main.R, meghívja a createCluster függvényt:
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)
A következő elnevezett test-helpers.py fájl ellenőrzi, hogy a createCluster függvény a várt választ adja-e vissza. Ahelyett, hogy fürtöt hoz létre a cél-munkaterületen, ez a teszt egy DatabricksClient objektumot kiszimulál, definiálja a kiszimulált objektum beállításait, majd átadja a kiszimulált objektumot a createCluster függvénynek. A teszt ezután ellenőrzi, hogy a függvény visszaadja-e az új szimulált fürt várt azonosítóját.
# 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")
}
)
})
További erőforrások
További információk: