Databricks SDK for R
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 a műveleteket az Azure Databricks-munkaterületeken és a kapcsolódó erőforrásokban 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:
Mielőtt elkezdené
A Databricks SDK for R használatának megkezdése előtt 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<your-workspace-url>
példáulhttps://adb-1234567890123456.7.azuredatabricks.net
a munkaterületenkénti URL-címet. Cserélje le<your-personal-access-token>
példáuldapi12345678901234567890123456789012
az Azure Databricks személyes hozzáférési jogkivonatára.DATABRICKS_HOST=<your-workspace-url> DATABRICKS_TOKEN=<your-personal-access-token>
Azure Databricks személyes hozzáférési jogkivonat létrehozásához tegye a következőket:
- Az Azure Databricks-munkaterületen kattintson az Azure Databricks-felhasználónevére a felső sávon, majd válassza a legördülő menü Beállítások elemét .
- Kattintson a Fejlesztőeszközök elemre.
- Az Access-jogkivonatok mellett kattintson a Kezelés gombra.
- Kattintson az Új jogkivonat létrehozása elemre.
- (Nem kötelező) Írjon be egy megjegyzést, amely segít azonosítani a jogkivonatot a jövőben, és módosíthatja a jogkivonat alapértelmezett 90 napos élettartamát. Élettartam nélküli (nem ajánlott) jogkivonat létrehozásához hagyja üresen az Élettartam (nap) mezőt (üres).
- Kattintson a Létrehozás lehetőségre.
- Másolja a megjelenített jogkivonatot egy biztonságos helyre, majd kattintson a Kész gombra.
Feljegyzés
Ügyeljen arra, hogy a másolt jogkivonatot biztonságos helyre mentse. Ne ossza meg másokkal a másolt jogkivonatot. Ha elveszíti a másolt jogkivonatot, nem tudja pontosan ugyanazt a jogkivonatot újragenerálni. Ehelyett meg kell ismételnie ezt az eljárást egy új jogkivonat létrehozásához. Ha elveszíti a másolt jogkivonatot, vagy úgy véli, hogy a jogkivonat sérült, a Databricks határozottan javasolja, hogy azonnal törölje a jogkivonatot a munkaterületről az Access-jogkivonatok lapon a jogkivonat melletti kuka (Visszavonás) ikonra kattintva.
Ha nem tud jogkivonatokat létrehozni vagy használni a munkaterületen, ennek az lehet az oka, hogy a munkaterület rendszergazdája letiltotta a jogkivonatokat, vagy nem adott engedélyt a jogkivonatok létrehozására vagy használatára. Tekintse meg a munkaterület rendszergazdáját vagy a következő témaköröket:
Az Azure Databricks-munkaterület URL-címének és személyes hozzáférési jogkivonatának további módjaiért tekintse meg a Hitelesítés a Databricks SDK for R-adattárban a GitHubon.
Fontos
Ne adjon hozzá
.Renviron
fá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.r
pé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.r
tartalmazó szkriptszerkesztőben kattintson a Forrás > vagy Forrás gombra az Echo használatával.Megjelenik a fürtök 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. Ez a fürt egy feldolgozóval rendelkezik, és a fürt 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 = "")
)
Fürt végleges törlése
Ez a példakód véglegesen törli a megadott fürtazonosítóval rendelkező fürtöt a munkaterületről.
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
logging
csomagot. 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.log
fájlba.basicConfig() addHandler(writeToFile, file="results.log") setLevel("ERROR")
Szükség szerint naplózza az üzeneteket. Az alábbi kód például naplózza az esetleges hibákat, ha a kód nem tudja hitelesíteni vagy listázni az elérhető fürtök nevét.
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.
Ha például a következő fájl neve helpers.r
egy függvényt createCluster
tartalmaz, amely adatokat ad vissza az új fürtről:
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 függvényt meghívó createCluster
következő fájlra hivatkozvamain.R
:
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 szimulál, definiálja a kicsúsztatott objektum beállításait, majd átadja a kicsúsztatott 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: