R için Databricks SDK'sı
Not
Bu makale, Deneysel durumda olan Databricks Labs tarafından sunulan R için Databricks SDK'sını kapsar. Geri bildirim sağlamak, soru sormak ve sorunları bildirmek için GitHub'daki R deposu için Databricks SDK'sının Sorunlar sekmesini kullanın.
Bu makalede, R için Databricks SDK'sı ile Azure Databricks çalışma alanlarındaKi Azure Databricks işlemlerini otomatikleştirmeyi öğreneceksiniz. Bu makale, R için Databricks SDK belgelerini tamamlar.
Not
R için Databricks SDK'sı, Azure Databricks hesaplarındaki işlemlerin otomasyonunu desteklemez. Hesap düzeyinde işlemleri çağırmak için farklı bir Databricks SDK'sı kullanın, örneğin:
Başlamadan önce
R için Databricks SDK'sını kullanmaya başlamadan önce geliştirme makinenizde aşağıdakiler olmalıdır:
Otomatikleştirmek istediğiniz hedef Azure Databricks çalışma alanı için bir Azure Databricks kişisel erişim belirteci .
Not
R için Databricks SDK'sı yalnızca Azure Databricks kişisel erişim belirteci kimlik doğrulamasını destekler.
R ve isteğe bağlı olarak R uyumlu tümleşik geliştirme ortamı (IDE). Databricks, RStudio Desktop'ı önerir ve bu makalenin yönergelerinde kullanır.
Get, R için Databricks SDK'sını kullanmaya başladı
Azure Databricks çalışma alanı URL'nizi ve kişisel erişim belirtecinizi R projenizin betiklerinde kullanılabilir hale getirin. Örneğin, R projesinin
.Renviron
dosyasına aşağıdakileri ekleyebilirsiniz. değerini çalışma alanı başına URL'nizle<your-workspace-url>
değiştirin, örneğinhttps://adb-1234567890123456.7.azuredatabricks.net
. değerini Azure Databricks kişisel erişim belirtecinizle değiştirin<your-personal-access-token>
, örneğindapi12345678901234567890123456789012
.DATABRICKS_HOST=<your-workspace-url> DATABRICKS_TOKEN=<your-personal-access-token>
Azure Databricks kişisel erişim belirteci oluşturmak için çalışma alanı kullanıcıları için Azure Databricks kişisel erişim belirteçleri'ndeki adımları izleyin.
Azure Databricks çalışma alanı URL'nizi ve kişisel erişim belirtecinizi sağlamanın ek yolları için bkz . GitHub'daki R deposu için Databricks SDK'sında kimlik doğrulaması .
Önemli
Bu, Azure Databricks kişisel erişim belirteçleri gibi hassas bilgilerin açığa çıkmasına neden olduğundan sürüm denetim sistemlerine dosya eklemeyin
.Renviron
.R paketi için Databricks SDK'sını yükleyin. Örneğin, RStudio Desktop'ta, Konsol görünümünde (> Taşımayı Görüntüle) aşağıdaki komutları birer birer çalıştırın:
install.packages("devtools") library(devtools) install_github("databrickslabs/databricks-sdk-r")
Not
R için Databricks SDK paketi CRAN'da kullanılamaz.
R için Databricks SDK'sına atıfta bulunmak ve Azure Databricks çalışma alanınızdaki kümelerin tümünü list yapmak için kod ekleyin. Örneğin, bir projenin
main.r
dosyasında kod aşağıdaki gibi olabilir:require(databricks) client <- DatabricksClient() list_clusters(client)[, "cluster_name"]
Betiğinizi çalıştırın. Örneğin, RStudio Desktop'ta, projenin
main.r
dosyasının etkin olduğu betik düzenleyicisinde Kaynak > Kaynak veya Yankılı Kaynak'a tıklayın.Kümelerin list'sü görünür. Örneğin, RStudio Desktop'ta bu, Konsol görünümündedir.
Kod örnekleri
Aşağıdaki kod örnekleri, kümeleri oluşturmak ve silmek ve iş oluşturmak için R için Databricks SDK'sının nasıl kullanılacağını gösterir.
Küme oluşturma
Bu kod örneği, belirtilen Databricks Runtime sürümüne ve küme düğümü türüne sahip bir küme oluşturur. Bu kümenin bir çalışanı vardır ve küme 15 dakikalık boşta kalma süresinden sonra otomatik olarak sonlanır.
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 = "")
)
Kümeyi kalıcı olarak silme
Bu kod örneği, belirtilen küme kimliğine sahip kümeyi çalışma alanından kalıcı olarak siler.
require(databricks)
client <- DatabricksClient()
cluster_id <- readline("ID of the cluster to delete (for example, 1234-567890-ab123cd4):")
delete_cluster(client, cluster_id)
İş oluşturma
Bu kod örneği, belirtilen not defterini belirtilen kümede çalıştırmak için kullanılabilecek bir Azure Databricks işi oluşturur. Bu kod çalışırken, konsoldaki kullanıcıdan mevcut not defterinin yolunu, mevcut küme kimliğini ve ilgili iş ayarlarını alır.
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 = "")
)
Günlük Kaydı
İletileri günlüğe kaydetmek için popüler logging
paketi kullanabilirsiniz. Bu paket birden çok günlük düzeyi ve özel günlük biçimi için destek sağlar. İletileri konsola veya dosyaya kaydetmek için bu paketi kullanabilirsiniz. İletileri günlüğe kaydetmek için aşağıdakileri yapın:
logging
paketini yükleyin. Örneğin, RStudio Desktop'ta , Konsol görünümünde (Görünümü > Odağı Konsola Taşı) aşağıdaki komutları çalıştırın:install.packages("logging") library(logging)
Günlüğe kaydetme paketini önyükleyin, iletileri günlüğe kaydetmek için setwhere kullanın, ve günlük düzeyini set olarak ayarlayın. Örneğin, aşağıdaki kod tüm
ERROR
iletileri ve altındaki iletileri dosyaya günlüğeresults.log
kaydeder.basicConfig() addHandler(writeToFile, file="results.log") setLevel("ERROR")
İletileri gerektiği gibi günlüğe kaydetme. Örneğin, kod kimlik doğrulaması yapamıyorsa veya kullanılabilir kümelerin adlarını list aşağıdaki kod hataları günlüğe kaydeder.
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) })
Test Etme
Kodunuzu test etmek için test gibi R test çerçevelerini kullanabilirsiniz. Azure Databricks REST API uç noktalarını çağırmadan veya Azure Databricks hesaplarınızın veya çalışma alanlarınızın durumunu değiştirmeden kodunuzu sanal koşullar altında test etmek için R sahte kitaplıklarını kullanabilirsiniz.
Örneğin, yeni küme hakkında bilgi döndüren bir helpers.r
işlev içeren adlı createCluster
aşağıdaki dosya göz önünde bulundurulduğunda:
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)
}
ve işlevini çağıran adlı main.R
aşağıdaki dosya göz önünde bulundurulduğunda createCluster
:
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)
Adlı aşağıdaki dosya test-helpers.py
, işlevin createCluster
beklenen yanıtı döndürip döndürmediğini sınar. Bu test, hedef çalışma alanında küme oluşturmak yerine bir DatabricksClient
nesneyle dalga geçer, sahte nesnenin ayarlarını tanımlar ve ardından sahte nesneyi işleve createCluster
geçirir. Test daha sonra işlevin yeni sahte kümenin beklenen kimliğini döndürip döndürmediğini denetler.
# 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")
}
)
})
Ek kaynaklar
Daha fazla bilgi için bkz.