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


RStudio в Azure Databricks

Вы можете использовать RStudio, популярную интегрированную среду разработки (IDE) для R, чтобы подключиться к вычислительным ресурсам Azure Databricks в рабочих областях Azure Databricks. Используйте 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.

    Примечание.

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

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

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

  5. В консоли RStudio (просмотр перемещения фокуса >) установите пакеты odbc и DBI из CRAN:

    require(devtools)
    
    install_version(
      package = "odbc",
      repos   = "http://cran.us.r-project.org"
    )
    
    install_version(
      package = "DBI",
      repos   = "http://cran.us.r-project.org"
    )
    
  6. Вернитесь в скрипт R (просмотр > фокуса на источник), загрузите установленные odbc и DBI пакеты:

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

    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 с размещением Databricks

Внимание

Сервер RStudio, размещенный в Databricks, устарел и доступен только в Databricks Runtime версии 15.4 и ниже. Дополнительные сведения см. в разделе об устаревании RStudio Server.

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

Дополнительные сведения см. в разделе "Подключение к серверу RStudio с размещением Databricks"

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

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

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

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

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

Требования

Примечание.

Хотя кластер может использовать режим доступа, поддерживающий каталог Unity, нельзя использовать RStudio Server из этого кластера для доступа к данным в каталоге Unity.

Начало работы: RStudio Server OS Edition

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

Чтобы открыть RStudio Server OS Edition в кластере, сделайте следующее:

  1. Откройте страницу сведений о кластере.

  2. Запустите кластер и перейдите на вкладку "Приложения" :

    Вкладка

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

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

  5. Из пользовательского интерфейса 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

  6. Также можно прикрепить пакет 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)
    

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

Начало работы: RStudio Workbench

В этом разделе показано, как настроить и начать работу с RStudio Workbench (ранее RStudio Server Pro) в кластере Azure Databricks. В зависимости от вашей лицензии 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, которая уже включает пакет RStudio Server Open Source Edition, необходимо сначала удалить этот пакет для успешной установки.

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

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

Скрипты инициализации кластера в DBFS являются конечными. Хранение скриптов инициализации в DBFS существует в некоторых рабочих областях для поддержки устаревших рабочих нагрузок и не рекомендуется. Необходимо перенести все скрипты инициализации, хранящиеся в DBFS. Инструкции по миграции см. в разделе "Миграция сценариев инициализации" из DBFS.

#!/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
  1. Замените <domain> на URL-адрес Azure Databricks, а <license-server-url> — на URL-адрес вашего сервера с плавающей лицензией.
  2. Сохраните этот .sh файл в качестве скрипта инициализации в расположении, например в домашнем каталоге в качестве файла рабочей области, тома каталога Unity или в хранилище объектов. Дополнительные сведения см. в разделе Скрипты инициализации в области кластера.
  3. Перед запуском кластера добавьте этот .sh файл в качестве скрипта инициализации из связанного расположения. Инструкции см. в сценариях инициализации в области кластера.
  4. Запустите кластер.

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

  1. Откройте страницу сведений о кластере.

  2. Запустите кластер и перейдите на вкладку "Приложения" :

    Вкладка

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

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

  5. Из пользовательского интерфейса 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

  6. Также можно прикрепить пакет 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

Какова разница между RStudio Server Open Source Edition и RStudio Workbench?

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

Кроме того, RStudio Server Open Source Edition распространяется в рамках общедоступной лицензии GNU Affero (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 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 обладает отличной поддержкой различных систем контроля версий и позволяет вам регистрировать проекты и управлять ими. Если код не сохраняется с помощью одного из следующих методов, вы рискуете потерять работу, если администратор рабочей области перезагрузится или завершает кластер.

Одним из способов является сохранение файлов (кода или данных) в 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. По желанию можно изменить этот каталог.

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

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

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

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

Сеанс RStudio

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

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

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