Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 Azure Databricks hedef ç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.
R için Databricks SDK'sını kullanmaya başlama
Azure Databricks çalışma alanı URL'nizi ve kişisel erişim belirtecinizi R projenizin betiklerinde kullanılabilir hale getirin. Örneğin, R projesinin
.Renvirondosyasına aşağıdakileri ekleyebilirsiniz.<your-workspace-url>ifadesini örneğin olarak,https://adb-1234567890123456.7.azuredatabricks.netile değiştirin.<your-personal-access-token>öğesini Azure Databricks kişisel erişim belirtecinizle değiştirin, ö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 kişisel erişim belirteçleri oluşturma adımlarını izleyin.
Azure Databricks çalışma alanı URL'nizi ve kişisel erişim belirtecinizi sağlamanın ek yolları için GitHub'daki Databricks SDK'sının R deposunda Kimlik Doğrulaması bölümüne bakın.
Ö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, Console görünümünde (Görünüm > Konsola Odağı Taşı), 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 başvurmak ve Azure Databricks çalışma alanınızdaki tüm kümeleri listelemek için kod ekleyin. Örneğin, bir projenin
main.rdosyası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.rdosyasının etkin olduğu betik düzenleyicisinde Kaynak > Kaynak veya Yankılı Kaynak'a tıklayın.Küme listesi görüntülenir. Ö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 = "")
)
Kayıt Tutma
İ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:
loggingpaketini yükleyin. Örneğin, RStudio Desktop'ta Konsol görünümünde (Odağı Konsola > Taşı) aşağıdaki komutları çalıştırın:install.packages("logging") library(logging)Günlük paketini yapılandırın, iletilerin günlüğe kaydedileceği yeri belirleyin ve günlük seviyesini ayarlayın. Örneğin, aşağıdaki kod
ERRORiletileri ve altındaki tüm iletileriresults.logdosyasına kaydeder.basicConfig() addHandler(writeToFile, file="results.log") setLevel("ERROR")Gerekli olduğunda iletileri günlüğe kaydedin. Örneğin, kimlik doğrulaması yapamıyor veya mevcut kümelerin adlarını listeleyemiyorsa, aşağıdaki kod herhangi bir hatayı 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 Yapma
Kodunuzu test etmek için testthat 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şlevi içeren createCluster adlı 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)
}
Aşağıdaki, main.R adlı ve createCluster işlevini çağıran dosya göz önüne alındığında:
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 nesnesini taklit eder, taklit edilen nesnenin ayarlarını tanımlar ve ardından taklit edilen nesneyi createCluster işlevine iletir. 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.