Поделиться через


Azure Databricks для разработчиков на R

В этом разделе приводятся рекомендации по разработке записных книжек и заданий в Azure Databricks на языке R.

Базовый рабочий процесс для начала работы

  1. Импорт кода: импортируйте собственный код из файлов или репозиториев Git или воспользуйтесь приведенным ниже руководством. Databricks рекомендует научиться использовать интерактивные записные книжки Azure Databricks.
  2. Запуск кода в кластере: создайте собственный кластер или получите разрешения на использование общего кластера. Подключите ноутбук к кластеру и запустите его.

После этого вы можете перейти к статьям по более конкретным темам:

Учебники

В предложенных ниже учебниках содержатся примеры кода и записных книжек для изучения распространенных рабочих процессов. См. Импорт записной книжки для получения инструкций по импорту примеров записных книжек в вашу рабочую область.

Справочные материалы

В следующих подразделах перечислены ключевые функции и советы, которые помогут вам приступить к разработке в Azure Databricks с помощью R.

Azure Databricks поддерживает два API, которые предоставляют интерфейс R для Apache Spark: SparkR и sparklyr.

SparkR

Важный

SparkR в Databricks вышел из употребления в Databricks Runtime 16.0 и выше. Databricks рекомендует вместо этого использовать sparklyr.

В этих статьях приведены общие сведения и справочные материалы по SparkR. SparkR — это интерфейс R для Apache Spark, предоставляющий реализацию распределенного кадра данных. SparkR поддерживает такие операции, как выбор, фильтрация и агрегирование (аналогично кадрам данных R), но в больших наборах данных.

sparklyr

В этой статье представлено введение в sparklyr. sparklyr — это интерфейс R для Apache Spark, который предоставляет функциональные возможности, аналогичные dplyr, broom и DBI.

Сравнение SparkR и sparklyr

В этой статье описываются ключевые сходства и различия между SparkR и sparklyr.

Работайте с DataFrame и таблицами с помощью SparkR и sparklyr

В этой статье описывается использование R, SparkR, sparklyr и dplyr для работы с R data.frame, Spark DataFrames и таблиц Spark в Azure Databricks.

Управление кодом с помощью записных книжек и папок Databricks Git

Записные книжки Azure Databricks поддерживают язык R. Функциональные возможности этих записных книжек аналогичны возможностями Jupyter с некоторыми дополнениями, например: встроенные визуализации с использованием больших данных, интеграции Apache Spark для отладки и мониторинга производительности, интеграции MLflow для отслеживания экспериментов машинного обучения. Начните с импорта записной книжки. Получив доступ к кластеру, вы сможете подключить записную книжку к этому кластеру и запустить записную книжку.

Папки Azure Databricks Git позволяют пользователям синхронизировать записные книжки и другие файлы с репозиториями Git. Папки Azure Databricks Git помогают управлять версиями кода и совместной работой, а также упрощать импорт полного репозитория кода в Azure Databricks, просмотр прошлых версий записных книжек и интеграцию с разработкой интегрированной среды разработки IDE. Начните с клонирования удаленного Git репозитория. Затем можно открыть или создать записные книжки с клонированием репозитория, подключить записную книжку к кластеру и запустить записную книжку.

Кластеры

Вычислительные ресурсы Azure Databricks обеспечивают управление вычислительными ресурсами как для отдельных узлов, так и для крупных кластеров. Вы можете настроить для кластера оборудование и библиотеки в соответствии с вашими потребностями. Получив доступ к кластеру, вы можете подключить записную книжку к кластеру или запустить задание в кластере.

Один узел R и распределенный R

Кластеры Azure Databricks состоят из узла драйвера Apache Spark и 0 или более узлов рабочих Spark (также известных как исполнители). Узел драйвера поддерживает состояние подключенной записной книжки, интерпретирует команды записной книжки и библиотеки, а также запускает мастер Spark, который координируется с исполнителями Spark. Рабочие узлы запускают исполнителей Spark, один исполнитель Spark на рабочий узел.

В кластере с одним узлом есть один узел драйвера и нет рабочих узлов; Spark работает в локальном режиме для поддержки доступа к таблицам, управляемым Azure Databricks. Кластеры с одним узлом поддерживают RStudio, записные книжки и библиотеки и полезны для проектов R, которые не зависят от Spark для больших данных или параллельной обработки. См. вычисление с одним узлом.

Для размеров данных, которые R пытается обработать (многие гигабайты или петабайты), вместо этого следует использовать несколько узлов или распределенных кластеров. Распределенные кластеры имеют один узел драйвера и один или несколько рабочих узлов. Распределенные кластеры поддерживают не только RStudio, записные книжки и библиотеки, но и пакеты R, такие как SparkR и sparkly, которые специально предназначены для использования с распределенными кластерами через SparkContext. Эти пакеты предоставляют знакомые API SQL и DataFrame, которые позволяют назначать и выполнять различные задачи и команды Spark параллельно между рабочими узлами. Дополнительные сведения о sparklyr и SparkR см. в статье "Сравнение SparkR и sparklyr".

Некоторые функции SparkR и sparklyr, которые используют особые преимущества распределения связанных работ между рабочими узлами, включают следующее:

  • sparklyr::spark_apply: выполняет произвольный код R в большом масштабе в кластере. Это особенно полезно для использования функций, доступных только в пакетах R или R, недоступных в Apache Spark или других пакетах Spark.
  • SparkR::dapply: применяет указанную функцию к каждому разделу SparkDataFrame.
  • SparkR::dapplyCollect: применяет указанную функцию к каждой секции SparkDataFrame и собирает результаты обратно в R в виде data.frame.
  • SparkR::gapply: группирует SparkDataFrame, используя указанные столбцы, и применяет указанную функцию R к каждой группе.
  • SparkR::gapplyCollect: группирует SparkDataFrame с помощью указанных столбцов, применяет указанную функцию R к каждой группе и собирает результат обратно в R в виде data.frame.
  • SparkR::spark.lapply: выполняет указанную функцию по списку элементов, распространяя вычисления с помощью Spark.

Примеры см. в записной книжке Distributed R: User Defined Functions in Spark.

Службы контейнеров Databricks

Службы контейнеров Databricks позволяют указать образ Docker при создании кластера. Databricks предоставляет исходный образ databricksruntime/rbase на платформе Docker Hub в качестве примера для запуска кластера Databricks Container Services с поддержкой R. См. также Dockerfile, который используется для создания базового образа.

Библиотеки

Кластеры Azure Databricks используют среду выполнения Databricks Runtime, которая в стандартной конфигурации содержит множество популярных библиотек, в том числе Apache Spark, Delta Lake и другие. Кроме того, можно устанавливать дополнительные сторонние или пользовательские пакеты R в библиотеки и использовать их в записных книжках и заданиях.

Начните с библиотек по умолчанию, указанных в заметках о выпуске и совместимости версий Databricks Runtime. Используйте Databricks Runtime для машинного обучения для рабочих нагрузок машинного обучения. Полные списки предустановленных библиотек см. в разделе "Установленные библиотеки R" для выбранной среды выполнения Databricks Runtime в версиях примечаний о выпуске Databricks Runtime и совместимости.

Вы можете настроить вашу рабочую среду, используя библиотеки R с областями видимости, специфичными для записной книжки, которые позволяют изменять конфигурацию вашей записной книжки или среды выполнения задач с использованием библиотек из CRAN или других репозиториев. Для этого можно использовать знакомую функцию install.packages из utils. В следующем примере устанавливается пакет Arrow R из репозитория CRAN по умолчанию:

install.packages("arrow")

Если вам нужна более старая версия, чем та, которая включена в Databricks Runtime, вы можете использовать блокнот для выполнения функции install_version из devtools. В следующем примере устанавливается dplyr версии 0.7.4 из CRAN:

require(devtools)

install_version(
  package = "dplyr",
  version = "0.7.4",
  repos   = "http://cran.r-project.org"
)

Пакеты, установленные таким образом, доступны в кластере. Их область действия ограничивается пользователем, установившим эти библиотеки. Это позволяет установить несколько версий одного пакета на одном и том же вычислительном ресурсе без конфликтов пакетов.

При необходимости можно установить другие библиотеки в качестве библиотек кластера, например из CRAN. Для этого в пользовательском интерфейсе кластера выберите Библиотеки > Установить новую > CRAN и укажите имя библиотеки. Этот подход особенно важен для вызова определяемых пользователем функций с помощью SparkR или sparklyr.

Дополнительные сведения см. в статье Библиотеки.

Чтобы установить пользовательский пакет в библиотеку:

  1. Создайте пользовательский пакет из командной строки или с помощью RStudio.

  2. Скопируйте пользовательский файл пакета с компьютера разработки в рабочее пространство Azure Databricks. Дополнительные сведения см. в разделе "Библиотеки".

  3. Установите пользовательский пакет в библиотеку, выполнив команду install.packages.

    Например, это можно сделать из записной книжки в рабочей области:

    install.packages(
      pkgs  = "/path/to/tar/file/<custom-package>.tar.gz",
      type  = "source",
      repos = NULL
    )
    

    Или сделайте так:

    %sh
    R CMD INSTALL /path/to/tar/file/<custom-package>.tar.gz
    

После установки пользовательского пакета в библиотеку добавьте библиотеку в путь поиска, а затем загрузите библиотеку с помощью одной команды.

Например:

# Add the library to the search path one time.
.libPaths(c("/path/to/tar/file/", .libPaths()))

# Load the library. You do not need to add the library to the search path again.
library(<custom-package>)

Чтобы установить пользовательский пакет в качестве библиотеки на каждом узле в кластере, необходимо использовать скрипты инициализации.

Визуализации

Записные книжки Azure Databricks для R поддерживают несколько типов визуализаций, реализуемых с помощью функции display.

Работы

Рабочие нагрузки R можно автоматизировать как запланированное или инициируемое задание в записной книжке в Azure Databricks.

  • Дополнительные сведения о создании задания через пользовательский интерфейс см. в разделе Настройка и редактирование заданий Databricks.
  • API заданий позволяет создавать, изменять и удалять задания.
  • Databricks CLI предоставляет удобный интерфейс командной строки для вызова API заданий.

Машинное обучение

Databricks поддерживает широкий спектр рабочих нагрузок машинного обучения, включая традиционное машинное обучение по табличным данным, глубокое обучение для компьютерного зрения и обработки естественного языка, системы рекомендаций, графовую аналитику и многое другое. Общие сведения о машинном обучении в Azure Databricks см. в Databricks Runtime для машинного обучения.

Для алгоритмов машинного обучения можно использовать предварительно установленные библиотеки в Databricks Runtime для машинного обучения. Вы также можете установить пользовательские библиотеки.

Для операций машинного обучения (MLOps) Azure Databricks предоставляет управляемую службу для библиотеки с открытым исходным кодом MLflow. С помощью MLflow Tracking можно записывать разработку моделей и сохранять модели в повторно используемых форматах. Реестр моделей MLflow можно использовать для управления и автоматизации продвижения моделей в рабочую среду. Задания и обслуживание моделей позволяют размещать модели в виде пакетных и потоковых заданий в качестве конечных точек REST. Дополнительные сведения и примеры см. в MLflow для генеративного агента ИИ и жизненного цикла модели машинного обучения или в документации к API MLflow R.

Средства для разработчиков на языке R

Кроме записных книжек Azure Databricks вы можете также использовать следующие средства для разработчиков на R:

Настройка сеанса R

В Databricks Runtime 12.2 LTS и более поздних версиях сеансы R можно настроить с помощью файлов профиля .Rprofile для всего сайта. Записные книжки R будут источником файла в виде кода R во время запуска. Чтобы изменить файл, найдите значение R_HOME и измените $R_HOME/etc/Rprofile.siteего. Обратите внимание, что Databricks добавила в файл конфигурацию, чтобы обеспечить правильную функциональность размещенного RStudio в Azure Databricks. Удаление любого из этих объектов может привести к тому, что RStudio не работает должным образом.

В Databricks Runtime 11.3 LTS и ниже это поведение можно включить, задав переменную DATABRICKS_ENABLE_RPROFILE=trueсреды.

Дополнительные ресурсы