Databricks SDK ل R

إشعار

تغطي هذه المقالة Databricks SDK ل R بواسطة Databricks Labs، وهي في حالة تجريبية. لتقديم الملاحظات وطرح الأسئلة والإبلاغ عن المشكلات، استخدم علامة التبويب المشكلات في Databricks SDK لمستودع R في GitHub.

في هذه المقالة، ستتعلم كيفية أتمتة العمليات في مساحات عمل Azure Databricks والموارد ذات الصلة باستخدام Databricks SDK ل R. تكمل هذه المقالة Databricks SDK لوثائق R.

إشعار

لا يدعم Databricks SDK ل R أتمتة العمليات في حسابات Azure Databricks. لاستدعاء العمليات على مستوى الحساب، استخدم Databricks SDK مختلفة، على سبيل المثال:

قبل البدء

قبل البدء في استخدام Databricks SDK ل R، يجب أن يحتوي جهاز التطوير الخاص بك على:

  • رمز مميز للوصول الشخصي ل Azure Databricks لمساحة عمل Azure Databricks المستهدفة التي تريد أتمتتها.

    إشعار

    يدعم Databricks SDK ل R مصادقة رمز الوصول الشخصي Azure Databricks فقط.

  • R، واختياريا بيئة تطوير متكاملة متوافقة مع R (IDE). توصي Databricks ب RStudio Desktop وتستخدمه في إرشادات هذه المقالة.

بدء استخدام Databricks SDK ل R

  1. اجعل عنوان URL لمساحة عمل Azure Databricks ورمز الوصول الشخصي متوفرا للنصوص النصية لمشروع R. على سبيل المثال، يمكنك إضافة ما يلي إلى ملف مشروع .Renviron R. استبدل <your-workspace-url> بعنوان URL لكل مساحة عمل، على سبيل المثال https://adb-1234567890123456.7.azuredatabricks.net. استبدل <your-personal-access-token> برمز الوصول الشخصي Azure Databricks الخاص بك، على سبيل المثال dapi12345678901234567890123456789012.

    DATABRICKS_HOST=<your-workspace-url>
    DATABRICKS_TOKEN=<your-personal-access-token>
    

    لإنشاء رمز مميز للوصول الشخصي إلى Azure Databricks، قم بما يلي:

    1. في مساحة عمل Azure Databricks، انقر فوق اسم مستخدم Azure Databricks في الشريط العلوي، ثم حدد الإعدادات من القائمة المنسدلة.
    2. انقر فوق المطور.
    3. إلى جانب رموز الوصول المميزة، انقر فوق إدارة.
    4. النقر على Generate new token.
    5. (اختياري) أدخل تعليقا يساعدك على تحديد هذا الرمز المميز في المستقبل، وتغيير العمر الافتراضي للرمز المميز وهو 90 يوما. لإنشاء رمز مميز بدون مدة بقاء (غير مستحسن)، اترك مربع مدة البقاء (أيام) فارغا (فارغ).
    6. انقر فوق "Generate".
    7. انسخ الرمز المميز المعروض إلى موقع آمن، ثم انقر فوق تم.

    إشعار

    تأكد من حفظ الرمز المميز المنسخ في موقع آمن. لا تشارك الرمز المميز المنسخ مع الآخرين. إذا فقدت الرمز المميز المنسخ، فلا يمكنك إعادة إنشاء نفس الرمز المميز بالضبط. بدلا من ذلك، يجب تكرار هذا الإجراء لإنشاء رمز مميز جديد. إذا فقدت الرمز المميز الذي تم نسخه، أو كنت تعتقد أنه تم اختراق الرمز المميز، فإن Databricks يوصي بشدة بحذف هذا الرمز المميز على الفور من مساحة العمل الخاصة بك عن طريق النقر فوق أيقونة سلة المهملات (إبطال) بجوار الرمز المميز في صفحة رموز Access المميزة .

    إذا لم تتمكن من إنشاء الرموز المميزة أو استخدامها في مساحة العمل الخاصة بك، فقد يرجع ذلك إلى قيام مسؤول مساحة العمل بتعطيل الرموز المميزة أو عدم منحك الإذن لإنشاء الرموز المميزة أو استخدامها. راجع مسؤول مساحة العمل أو المواضيع التالية:

    للحصول على طرق إضافية لتوفير عنوان URL لمساحة عمل Azure Databricks ورمز الوصول الشخصي، راجع المصادقة في مستودع Databricks SDK ل R في GitHub.

    هام

    لا تقم بإضافة .Renviron ملفات إلى أنظمة التحكم بالإصدار، لأن هذا قد يعرض المعلومات الحساسة مثل الرموز المميزة للوصول الشخصي ل Azure Databricks.

  2. تثبيت Databricks SDK لحزمة R. على سبيل المثال، في RStudio Desktop، في طريقة عرض وحدة التحكم (عرض > نقل التركيز إلى وحدة التحكم)، قم بتشغيل الأوامر التالية، واحدا تلو الآخر:

    install.packages("devtools")
    library(devtools)
    install_github("databrickslabs/databricks-sdk-r")
    

    إشعار

    لا يتوفر Databricks SDK لحزمة R على CRAN.

  3. أضف التعليمات البرمجية للإشارة إلى Databricks SDK ل R ولسرد جميع المجموعات في مساحة عمل Azure Databricks. على سبيل المثال، في ملف المشروع main.r ، قد تكون التعليمات البرمجية كما يلي:

    require(databricks)
    
    client <- DatabricksClient()
    
    list_clusters(client)[, "cluster_name"]
    
  4. تشغيل البرنامج النصي الخاص بك. على سبيل المثال، في RStudio Desktop، في محرر البرنامج النصي مع ملف المشروع main.r النشط، انقر فوق المصدر > أو المصدر مع Echo.

  5. تظهر قائمة المجموعات. على سبيل المثال، في RStudio Desktop، هذا في طريقة عرض وحدة التحكم .

أمثلة على التعليمات البرمجية

توضح أمثلة التعليمات البرمجية التالية كيفية استخدام Databricks SDK ل R لإنشاء مجموعات وحذفها وإنشاء وظائف.

إنشاء نظام مجموعة

ينشئ مثال التعليمات البرمجية هذا مجموعة مع إصدار Databricks Runtime المحدد ونوع عقدة نظام المجموعة. يحتوي نظام المجموعة هذا على عامل واحد، وينتهي نظام المجموعة تلقائيا بعد 15 دقيقة من وقت الخمول.

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 = "")
)

حذف مجموعة بشكل دائم

يحذف مثال التعليمات البرمجية هذا نظام المجموعة بمعرف نظام المجموعة المحدد من مساحة العمل بشكل دائم.

require(databricks)

client <- DatabricksClient()

cluster_id <- readline("ID of the cluster to delete (for example, 1234-567890-ab123cd4):")

delete_cluster(client, cluster_id)

قم بإنشاء وظيفة

ينشئ مثال التعليمات البرمجية هذا مهمة Azure Databricks التي يمكن استخدامها لتشغيل دفتر الملاحظات المحدد على نظام المجموعة المحدد. أثناء تشغيل هذه التعليمات البرمجية، فإنه يحصل على مسار دفتر الملاحظات الحالي، ومعرف نظام المجموعة الحالي، وإعدادات المهمة ذات الصلة من المستخدم في وحدة التحكم.

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 = "")
)

تسجيل الدخول

يمكنك استخدام الحزمة الشائعة logging لتسجيل الرسائل. توفر هذه الحزمة دعما لمستويات تسجيل متعددة وتنسيقات سجل مخصصة. يمكنك استخدام هذه الحزمة لتسجيل الرسائل إلى وحدة التحكم أو إلى ملف. لتسجيل الرسائل، قم بما يلي:

  1. ثبّت حزمة logging. على سبيل المثال، في RStudio Desktop، في طريقة عرض وحدة التحكم (عرض > نقل التركيز إلى وحدة التحكم)، قم بتشغيل الأوامر التالية:

    install.packages("logging")
    library(logging)
    
  2. قم بتمهيد حزمة التسجيل، وتعيين مكان تسجيل الرسائل، وتعيين مستوى التسجيل. على سبيل المثال، تسجل التعليمات البرمجية التالية جميع ERROR الرسائل والإصدارات أدناه إلى results.log الملف.

    basicConfig()
    addHandler(writeToFile, file="results.log")
    setLevel("ERROR")
    
  3. تسجيل الرسائل حسب الحاجة. على سبيل المثال، تسجل التعليمات البرمجية التالية أي أخطاء إذا تعذر على التعليمات البرمجية مصادقة أسماء المجموعات المتوفرة أو سردها.

    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)
    })
    

الاختبار

لاختبار التعليمات البرمجية الخاصة بك، يمكنك استخدام أطر عمل اختبار R مثل testthat. لاختبار التعليمات البرمجية الخاصة بك في ظل ظروف محاكاة دون استدعاء نقاط نهاية Azure Databricks REST API أو تغيير حالة حسابات Azure Databricks أو مساحات العمل الخاصة بك، يمكنك استخدام مكتبات وهمية R مثل السخرية.

على سبيل المثال، بالنظر إلى الملف التالي المسمى helpers.r الذي يحتوي على دالة createCluster تقوم بإرجاع معلومات حول نظام المجموعة الجديد:

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)
}

وبالنظر إلى الملف التالي المسمى main.R الذي يستدعي الدالة 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)

يختبر الملف التالي المسمى test-helpers.py ما إذا كانت الدالة createCluster ترجع الاستجابة المتوقعة. بدلا من إنشاء نظام مجموعة في مساحة العمل الهدف، يقوم هذا الاختبار بالسخرية من كائن DatabricksClient ، ويحدد إعدادات الكائن المقلد، ثم يمرر الكائن المقلد إلى createCluster الوظيفة. ثم يتحقق الاختبار ما إذا كانت الدالة ترجع المعرف المتوقع لنظام المجموعة المقلدة الجديد.

# 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")
    }
  )
})

الموارد الإضافية

لمزيد من المعلومات، راجع: