RStudio в Azure Databricks

Для подключения к вычислительным ресурсам Azure Databricks в рабочих областях Azure Databricks можно использовать популярную интегрированную среду разработки (IDE) для R. RStudio Desktop можно использовать для подключения к кластеру Azure Databricks или хранилищу SQL с локального компьютера разработки. Вы также можете использовать веб-браузер для входа в рабочую область Azure Databricks, а затем подключиться к кластеру Azure Databricks с установленным сервером RStudio Server в этой рабочей области.

RStudio Desktop;

RStudio Desktop можно использовать для подключения к удаленному кластеру Azure Databricks или хранилищу SQL с локального компьютера разработки. Для подключения в этом сценарии можно использовать подключение ODBC и вызвать функции пакета ODBC для R, описанные в этом разделе.

Примечание

В этом сценарии RStudio Desktop нельзя использовать такие пакеты, как SparkR или sparklyr , если вы также не используете Databricks Connect. В качестве альтернативы использованию RStudio Desktop можно использовать веб-браузер для входа в рабочую область Azure Databricks, а затем подключиться к кластеру Azure Databricks с установленным сервером RStudio Server в этой рабочей области.

Чтобы настроить RStudio Desktop на локальном компьютере разработки, выполните указанные действия.

  1. Скачайте и установите R 3.3.0 или более поздней версии.
  2. Скачайте и установите RStudio Desktop.
  3. Запустите RStudio Desktop.

(Необязательно) Чтобы создать проект RStudio, выполните приведенные далее действия.

  1. Запустите RStudio Desktop.
  2. Нажмите кнопку "Создать проект>".
  3. Выберите новый проект каталога>.
  4. Выберите новый каталог для проекта и нажмите кнопку "Создать проект".

Чтобы создать скрипт R, выполните следующие действия.

  1. Открыв проект, нажмите кнопку "Создать > файл > R-скрипт".
  2. Нажмите кнопку "Сохранить как".>
  3. Присвойте файлу имя и нажмите кнопку "Сохранить".

Чтобы подключиться к удаленному кластеру Azure Databricks или хранилищу SQL через ODBC для R, выполните следующие действия.

  1. Получите значения имени узла сервера, порта и пути HTTP для удаленного кластера или хранилища SQL. Для кластера эти значения находятся на вкладке JDBC/ODBC в разделе "Дополнительные параметры". Для хранилища SQL эти значения находятся на вкладке сведений о подключении .

  2. Получите личный маркер доступа Azure Databricks.

    Примечание

    Рекомендуется использовать маркеры доступа, принадлежащие субъектам-службам, а не пользователям рабочей области, при проверке подлинности с помощью автоматизированных средств, систем, сценариев и приложений. Дополнительные сведения см. в разделе "Управление субъектами-службами".

  3. Установите и настройте драйвер ODBC Databricks для Windows, macOS или Linux на основе операционной системы локального компьютера.

  4. Настройте имя источника данных ODBC (DSN) в удаленном кластере или хранилище SQL для Windows, macOS или Linux на основе операционной системы локального компьютера.

  5. Из консоли RStudio (view > Move Focus to Console) установите пакеты ODBC и DBI из CRAN. В следующем примере используется моментальный снимок CRAN:2022-02-24

    install.packages(c("odbc", "DBI"), repos = "https://cran.microsoft.com/snapshot/2022-02-24/")
    
  6. Вернитесь в скрипт R (view > Move Focus to Source), загрузите установленные odbc и DBI пакеты:

    library(odbc)
    library(DBI)
    
  7. Вызовите версию ODBC функции dbConnect в DBI пакете, указав odbc драйвер в odbc пакете, а также имя DSN ODBC, созданное, например ИМЯ DSN DatabricksODBC.

    conn = dbConnect(
      drv = odbc(),
      dsn = "Databricks"
    )
    
  8. Вызовите операцию через DSN ODBC, например SELECT инструкцию через функцию dbGetQuery в пакете DBI , указав имя переменной подключения и SELECT сам оператор, например из таблицы с именем diamondsdefaultсхемы (базы данных):

    print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))
    

Полный сценарий R выглядит следующим образом:

library(odbc)
library(DBI)

conn = dbConnect(
  drv = odbc(),
  dsn = "Databricks"
)

print(dbGetQuery(conn, "SELECT * FROM default.diamonds LIMIT 2"))

Чтобы запустить скрипт, в представлении источника нажмите кнопку "Источник". Результаты для предыдущего скрипта R приведены ниже.

  _c0 carat     cut color clarity depth table price    x    y    z
1   1  0.23   Ideal     E     SI2  61.5    55   326 3.95 3.98 2.43
2   2  0.21 Premium     E     SI1  59.8    61   326 3.89 3.84 2.31

RStudio Server

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

Примечание

В качестве альтернативы RStudio Server можно использовать RStudio Desktop для подключения к кластеру Azure Databricks или хранилищу SQL с локального компьютера разработки с помощью подключения ODBC и вызова функций пакета ODBC для R. В сценарии RStudio Desktop нельзя использовать такие пакеты, как SparkR или sparklyr , если вы также не используете Databricks Connect.

Для RStudio Server можно использовать выпуск Open Source Edition или RStudio Workbench (ранее RStudio Server Pro) в Azure Databricks. Если вы хотите использовать RStudio Workbench / RStudio Server Pro, необходимо перенести существующую лицензию RStudio Workbench / RStudio Server Pro в Azure Databricks (см. статью "Начало работы с RStudio Workbench" (ранее RStudio Server Pro).

Databricks рекомендует использовать Databricks Runtime для машинного обучения (Databricks Runtime ML) в кластерах Azure Databricks с RStudio Server, чтобы сократить время запуска кластера. Databricks Runtime ML включает неизмененные версии пакета RStudio Server Open Source Edition, для которого исходный код можно найти на сайте GitHub. В следующей таблице перечислены версии RStudio Server Open Source Edition, предварительно установленные в версиях Databricks Runtime ML.

Версия Databricks Runtime для Машинного обучения Версия RStudio Server
Databricks Runtime 7.3 LTS ML 1.2
Databricks Runtime 9.1 LTS ML и 10.4 LTS ML 1.4

Архитектура интеграции RStudio

При использовании RStudio Server на Azure Databricks управляющая программа RStudio Server запускается на узле драйвера кластера Azure Databricks. Веб-интерфейс RStudio доступен через веб-приложение Azure Databricks, что означает, что не нужно вносить какие-либо изменения в конфигурацию сети кластера. На этой диаграмме показана архитектура компонента интеграции RStudio.

Архитектура RStudio в Databricks

Предупреждение

Azure Databricks использует прокси-сервер для веб-службы RStudio через порт 8787 драйвера Spark кластера. Этот веб-прокси предназначен для использования только с RStudio. При запуске других веб-служб через порт 8787 можно подвергнуть своих пользователей потенциальным уязвимостям безопасности. Ни Databricks, ни Microsoft не несут ответственности за какие-либо проблемы, возникающие в результате установки неподдерживаемого программного обеспечения в кластере.

Требования

Начало работы с RStudio Server Open Source Edition

Важно!

Если вы используете Databricks Runtime 7.0 ML или более поздней версии, RStudio Server Open Source Edition уже установлен. Вы можете пропустить раздел об установке RStudio Server и перейти к использованию RStudio Server Open Source Edition.

Чтобы приступить к работе с RStudio Server Open Source Edition в Azure Databricks, необходимо установить RStudio в кластере Azure Databricks. Эту установку требуется выполнить только один раз. Установка обычно выполняется администратором.

Установка RStudio Server Open Source Edition

Чтобы настроить RStudio Server Open Source Edition в кластере Azure Databricks, использующего Databricks Runtime 6.6 ML или ниже, необходимо создать скрипт инициализации для установки двоичного пакета RStudio Server Open Source Edition. Дополнительные сведения см. в разделе Скрипты инициализации в области кластера. Ниже приведен пример ячейки записной книжки, которая устанавливает сценарий инициализации в расположении на DBFS.

Важно!

  • Все пользователи имеют права чтения и записи в DBFS, поэтому сценарий инициализации может изменить любой пользователь. Если это может вызвать проблемы, Databricks рекомендует поместить сценарий инициализации в Azure Data Lake Storage 2-го поколения и ограничить разрешения на доступ к нему.

  • Может потребоваться изменить URL-адрес пакета в зависимости от версии среды выполнения Ubuntu, которую можно найти в заметках о выпуске.

script = """#!/bin/bash

set -euxo pipefail
RSTUDIO_BIN="/usr/sbin/rstudio-server"

if [[ ! -f "$RSTUDIO_BIN" && $DB_IS_DRIVER = "TRUE" ]]; then
  apt-get update
  apt-get install -y gdebi-core
  cd /tmp
  # You can find new releases at https://rstudio.com/products/rstudio/download-server/debian-ubuntu/.
  wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2022.02.1-461-amd64.deb -O rstudio-server.deb
  sudo gdebi -n rstudio-server.deb
  rstudio-server restart || true
fi
"""

dbutils.fs.mkdirs("/databricks/rstudio")
dbutils.fs.put("/databricks/rstudio/rstudio-install.sh", script, True)
  1. Выполните код в записной книжке, чтобы установить сценарий по адресу dbfs:/databricks/rstudio/rstudio-install.sh.
  2. Перед запуском кластера добавьте dbfs:/databricks/rstudio/rstudio-install.sh в качестве скрипта инициализации. Дополнительные сведения см. в статье Сценарии инициализации на уровне кластера.
  3. Запустите кластер.

Использование RStudio Server Open Source Edition

  1. Отображение сведений о кластере, на котором установлен открытый исходный код RStudio Server, а затем перейдите на вкладку "Приложения ":

    Вкладка

  2. На вкладке "Приложения" нажмите кнопку "Настройка RStudio ". При этом создается одноразовый пароль. Щелкните ссылку Показать, чтобы отобразить и скопировать пароль.

    Одноразовый пароль RStudio

  3. Щелкните ссылку "Открыть RStudio ", чтобы открыть пользовательский интерфейс на новой вкладке. Введите имя пользователя и пароль в форме входа и войдите в систему.

    Форма входа RStudio

  4. Из пользовательского интерфейса RStudio можно импортировать пакет SparkR и настроить сеанс SparkR для запуска заданий Spark в вашем кластере.

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    Сеанс RStudio Open Source Edition

  5. Также можно прикрепить пакет sparklyr и настроить подключение к Spark.

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    Подключение sparklyr rStudio Open Source Edition

Начало работы с RStudio Workbench (ранее RStudio Server Pro)

В феврале 2022 года решение RStudio Server Pro было переименовано в RStudio Workbench (вопросы и ответы об изменении имени). В зависимости от вашей лицензии RStudio Workbench может включать RStudio Server Pro.

Настройка сервера лицензирования RStudio

Чтобы использовать RStudio Workbench в Azure Databricks, необходимо преобразовать лицензию Pro в плавающую лицензию. Для получения помощи обратитесь в help@rstudio.com. После преобразования лицензии необходимо настроить сервер лицензирования для RStudio Workbench.

Для настройки сервера лицензирования выполните следующие действия.

  1. Запустите небольшой экземпляр в сети поставщика облачных служб; управляющая программа сервера лицензирования занимает немного места.
  2. Загрузите и установите соответствующую версию сервера лицензирования RStudio в свой экземпляр и запустите службу. Подробные инструкции см. в руководстве администратора RStudio Workbench.
  3. Убедитесь, что порт сервера лицензирования открыт для экземпляров Azure Databricks.

Установка RStudio Workbench

Чтобы настроить RStudio Workbench в кластере Azure Databricks, необходимо создать скрипт инициализации для установки бинарного пакета RStudio Workbench и настроить его для использования вашего сервера лицензирования для аренды лицензий. Дополнительные сведения см. в статье Журналы диагностики.

Примечание

Если вы планируете установить RStudio Workbench в версии Databricks Runtime, которая уже включает пакет RStudio Server Open Source Edition, необходимо сначала удалить этот пакет для успешной установки.

Ниже приведен пример ячейки записной книжки, которая создает сценарий инициализации в DBFS. Сценарий также выполняет дополнительные настройки проверки подлинности, которые упрощают интеграцию с Azure Databricks.

Важно!

  • Все пользователи имеют права чтения и записи в DBFS, поэтому сценарий инициализации может изменить любой пользователь. Если это может вызвать проблемы, Databricks рекомендует поместить сценарий инициализации в Azure Data Lake Storage 2-го поколения и ограничить разрешения на доступ к нему.

  • Может потребоваться изменить URL-адрес пакета в зависимости от версии среды выполнения Ubuntu, которую можно найти в заметках о выпуске.

script = """#!/bin/bash

set -euxo pipefail

if [[ $DB_IS_DRIVER = "TRUE" ]]; then
  sudo apt-get update
  sudo dpkg --purge rstudio-server # in case open source version is installed.
  sudo apt-get install -y gdebi-core alien

  ## Installing RStudio Workbench
  cd /tmp

  # You can find new releases at https://rstudio.com/products/rstudio/download-commercial/debian-ubuntu/.
  wget https://download2.rstudio.org/server/bionic/amd64/rstudio-workbench-2022.02.1-461.pro1-amd64.deb -O rstudio-workbench.deb
  sudo gdebi -n rstudio-workbench.deb

  ## Configuring authentication
  sudo echo 'auth-proxy=1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-user-header-rewrite=^(.*)$ $1' >> /etc/rstudio/rserver.conf
  sudo echo 'auth-proxy-sign-in-url=<domain>/login.html' >> /etc/rstudio/rserver.conf
  sudo echo 'admin-enabled=1' >> /etc/rstudio/rserver.conf
  sudo echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /etc/rstudio/rsession-profile

  # Enabling floating license
  sudo echo 'server-license-type=remote' >> /etc/rstudio/rserver.conf

  # Session configurations
  sudo echo 'session-rprofile-on-resume-default=1' >> /etc/rstudio/rsession.conf
  sudo echo 'allow-terminal-websockets=0' >> /etc/rstudio/rsession.conf

  sudo rstudio-server license-manager license-server <license-server-url>
  sudo rstudio-server restart || true
fi
"""

dbutils.fs.mkdirs("/databricks/rstudio")
dbutils.fs.put("/databricks/rstudio/rstudio-install.sh", script, True)
  1. Замените <domain> на URL-адрес Azure Databricks, а <license-server-url> — на URL-адрес вашего сервера с плавающей лицензией.
  2. Выполните код в записной книжке, чтобы установить сценарий по адресу dbfs:/databricks/rstudio/rstudio-install.sh.
  3. Перед запуском кластера добавьте dbfs:/databricks/rstudio/rstudio-install.sh как сценарий инициализации. Дополнительные сведения см. в статье Журналы диагностики.
  4. Запустите кластер.

Использование RStudio Server Pro

  1. Отобразите сведения о кластере, где выполнена установка RStudio, и перейдите на вкладку Приложения:

    Вкладка

  2. На вкладке "Приложения" нажмите кнопку Настроить RStudio.

    Одноразовый пароль RStudio

  3. Одноразовый пароль не требуется. Щелкните ссылку Открыть пользовательский интерфейс RStudio, и откроется сеанс RStudio Pro, прошедший проверку подлинности.

  4. Из пользовательского интерфейса RStudio можно подключить пакет SparkR и настроить сеанс SparkR для запуска заданий Spark в вашем кластере.

    library(SparkR)
    
    sparkR.session()
    
    # Query the first two rows of a table named "diamonds" in a
    # schema (database) named "default" and display the query result.
    df <- SparkR::sql("SELECT * FROM default.diamonds LIMIT 2")
    showDF(df)
    

    Сеанс RStudio Pro

  5. Также можно прикрепить пакет sparklyr и настроить подключение к Spark.

    library(sparklyr)
    
    sc <- spark_connect(method = "databricks")
    
    # Query a table named "diamonds" and display the first two rows.
    df <- spark_read_table(sc = sc, name = "diamonds")
    print(x = df, n = 2)
    

    Подключение sparklyr в RStudio Pro

Часто задаваемые вопросы о RStudio Server

В чем разница между RStudio Server Open Source Edition и RStudio Workbench?

RStudio Workbench поддерживает широкий спектр корпоративных функций, недоступных в выпуске Open Source Edition. Сравнение функций можно просмотреть на веб-сайте RStudio.

Кроме того, RStudio Server Open Source Edition распространяется под лицензией GNU Affero General Public License (AGPL), а версия Pro поставляется с коммерческой лицензией для организаций, которые не могут использовать программное обеспечение AGPL.

Наконец, RStudio Workbench поставляется с профессиональной и корпоративной поддержкой RStudio, PBC, а RStudio Server Open Source Edition не поддерживается.

Могу ли я использовать свою лицензию RStudio Workbench/RStudio Server Pro в Azure Databricks?

Да, если у вас уже есть лицензия Pro или Enterprise для RStudio Server, вы можете использовать эту лицензию на Azure Databricks. См. статью Начало работы с RStudio Workbench (ранее RStudio Server Pro), чтобы узнать, как настроить RStudio Workbench в Azure Databricks.

Где работает RStudio Server? Нужно ли управлять какими-либо дополнительными службами/серверами?

Как видно на схеме в архитектуре интеграции RStudio, управляющая программа RStudio Server работает на узле драйвера (главном) вашего кластера Azure Databricks. При использовании RStudio Server Open Source Edition вам не нужно запускать дополнительные серверы и службы. Но для RStudio Workbench необходимо управлять отдельным экземпляром, на котором запущен сервер лицензирования RStudio.

Можно ли использовать RStudio Server в стандартном кластере?

Примечание

В этой статье описывается устаревший пользовательский интерфейс кластеров. Дополнительные сведения о пользовательском интерфейсе предварительной версии, включая изменения терминологии для режимов доступа к кластеру, см. в статье "Создание кластера".

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

Можно ли использовать RStudio Server в кластере с автоматическим завершением?

Нет, нельзя использовать RStudio, когда включено автоматическое завершение. При автоматическом завершении может произойти очистка несохраненных пользовательских сценариев и данных внутри сеанса RStudio. Чтобы защитить пользователей от этого сценария непреднамеренной потери данных, RStudio по умолчанию отключен в таких кластерах.

Клиентам, которым требуется очистка ресурсов кластера, когда они не используются, Databricks рекомендует использовать программные интерфейсы кластеров для очистки кластеров RStudio по расписанию.

Как сохранить свою работу в RStudio?

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

Также можно сохранять файлы (код или данные) в файловой системе Databricks (DBFS). См. раздел Что такое файловая система Databricks (DBFS)?. Например, если сохранить файл под /dbfs/, файлы не удалятся при остановке или перезапуске кластера.

Важно!

Если не сохранить свой код с помощью контроля версий или DBFS, вы рискуете потерять свою работу, если администратор перезапустит или завершит работу кластера.

Другой способ — сохранить записную книжку R в локальной файловой системе, выполнив ее экспорт как Rmarkdown, а затем импорт файла в экземпляр RStudio.

Дополнительные сведения см. в блоге о совместном использовании записных книжек R с помощью RMarkdown.

Как начать сеанс SparkR?

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

library(SparkR)

sparkR.session()

Если при импорте пакета SparkR возникла ошибка, запустите .libPaths() и убедитесь, что /home/ubuntu/databricks/spark/R/lib включен в результат.

Если он не включен, проверьте содержимое /usr/lib/R/etc/Rprofile.site. Укажите /home/ubuntu/databricks/spark/R/lib/SparkR в драйвере, чтобы убедиться, что пакет SparkR установлен.

Как начать сеанс sparklyr?

Пакет sparklyr должен быть установлен в кластере. Установку пакета sparklyr можно выполнить одним из следующих способов.

  • Как библиотека в Azure Databricks
  • Команда install.packages()
  • Пользовательский интерфейс управления пакетами RStudio
library(sparklyr)

sc <- spark_connect(method = “databricks”)

Как RStudio интегрируется с записными книжками Azure Databricks R?

Можно перемещать свою работу между записными книжками и RStudio с помощью контроля версий.

Что такое рабочий каталог?

При запуске проекта в RStudio вы выбираете рабочий каталог. По умолчанию это корневой каталог в контейнере драйвера (главном), где работает RStudio Server. По желанию можно изменить этот каталог.

Не работает терминал или git внутри RStudio на Azure Databricks. Как можно устранить эту проблему?

Убедитесь, что отключены веб-сокеты. В RStudio Server Open Source Edition это можно сделать из пользовательского интерфейса.

Сеанс RStudio

В RStudio Server Pro можно добавить allow-terminal-websockets=0 к /etc/rstudio/rsession.conf, чтобы отключить веб-сокеты для всех пользователей.

Я не вижу вкладку "Приложения" в сведениях о кластере.

Эта функция доступна не для всех клиентов. У вас должен действовать план уровня "Премиум".

Можно ли запускать приложения Shiny из RStudio на Azure Databricks?

Да, можно разрабатывать и просматривать приложения Shiny внутри RStudio Server на Databricks.