RStudio en Azure Databricks

Puede usar RStudio, un entorno de desarrollo integrado (IDE) popular para R, para conectarse a los recursos de proceso de Azure Databricks en áreas de trabajo de Azure Databricks. Puede usar RStudio Desktop para conectarse a un clúster de Azure Databricks o un almacén de SQL desde la máquina de desarrollo local. También puede usar el explorador web para iniciar sesión en el área de trabajo de Azure Databricks y después conectarse a un clúster de Azure Databricks que tenga RStudio Server instalado dentro de esa área de trabajo.

Conectarse mediante RStudio Desktop

Puede usar RStudio Desktop para conectarse a un clúster de Azure Databricks remoto o a un almacén de SQL desde la máquina de desarrollo local. Para conectarse en este escenario, use una conexión ODBC y llame a funciones de paquete ODBC para R, que se describen en esta sección.

Nota:

No puede usar paquetes como SparkR o sparklyr en este escenario de RStudio Desktop, a menos que también use Databricks Connect. Como alternativa al uso de RStudio Desktop, puede usar el explorador web para iniciar sesión en el área de trabajo de Azure Databricks y después conectarse a un clúster de Azure Databricks que tenga RStudio Server instalado en esa área de trabajo.

Para configurar RStudio Desktop en la máquina de desarrollo local:

  1. Descargue e instale R 3.3.0 o una versión posterior.
  2. Descargue e instale RStudio Desktop.
  3. Inicie RStudio Desktop.

(Opcional) Para crear un proyecto de RStudio:

  1. Inicie RStudio Desktop.
  2. Haga clic en Archivo > Nuevo proyecto.
  3. Seleccione Nuevo directorio> Nuevo proyecto.
  4. Elija un nuevo directorio para el proyecto y, a continuación, haga clic en Crear proyecto.

Para crear un script de R:

  1. Con el proyecto abierto, haga clic en Archivo > Nuevo archivo > Script de R.
  2. Haga clic en Archivo > Guardar como.
  3. Asigne un nombre al archivo y, a continuación, haga clic en Guardar.

Para conectarse al clúster remoto de Azure Databricks o al almacén de SQL mediante ODBC para R:

  1. Obtenga los valores del nombre de host, el puerto y la ruta de acceso HTTP del clúster remoto o el almacén de SQL. Para un clúster, estos valores se encuentran en la pestaña JDBC/ODBC de Opciones avanzadas. Para un almacén de SQL, estos valores se encuentran en la pestaña Detalles de conexión.

  2. Obtenga un token de acceso personal de Azure Databricks.

    Nota:

    Como procedimiento recomendado de seguridad, cuando se autentique con herramientas, sistemas, scripts y aplicaciones automatizados, Databricks recomienda usar los tokens de acceso personal pertenecientes a las entidades de servicio en lugar de a los usuarios del área de trabajo. Para crear los tokens para las entidades de servicio, consulte Administración de tokens de acceso personal para una entidad de servicio.

  3. Instale y configure el controlador ODBC de Databricks para Windows, macOS o Linux, en función del sistema operativo del equipo local.

  4. Configure un nombre de origen de datos (DSN) de ODBC en el clúster remoto o el almacén de SQL para Windows, macOS o Linux, en función del sistema operativo del equipo local.

  5. Desde la consola de RStudio (Ver > Mover el foco a la consola), instale los paquetes ODBC y DBI desde CRAN. En el ejemplo siguiente se usa la instantánea CRAN con fecha 2022-02-24:

    install.packages(c("odbc", "DBI"), repos = "https://cran.microsoft.com/snapshot/2022-02-24/")
    
  6. De nuevo en el script de R (Ver > Mover el foco al origen), cargue los paquetes odbc y DBI instalados:

    library(odbc)
    library(DBI)
    
  7. Llame a la versión de ODBC de la función dbConnect en el paquete DBI, especificando el controlador odbc en el paquete odbc, así como el DSN de ODBC que creó, por ejemplo, un DSN de ODBC de Databricks.

    conn = dbConnect(
      drv = odbc(),
      dsn = "Databricks"
    )
    
  8. Llame a una operación a través del DSN de ODBC, por ejemplo, una instrucción SELECT a través de la función dbGetQuery del paquete DBI, especificando el nombre de la variable de conexión y la propia instrucción SELECT, por ejemplo, desde una tabla denominada diamonds en un esquema (base de datos) denominado default:

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

El script de R completo es el siguiente:

library(odbc)
library(DBI)

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

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

Para ejecutar el script, en la vista de origen, haga clic en Origen. Los resultados del script de R anterior son los siguientes:

  _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

Conectarse mediante RStudio Desktop

Puede usar el explorador web para iniciar sesión en el área de trabajo de Azure Databricks y después conectarse a un clúster de Azure Databricks que tenga instalado RStudio Server, dentro de esa área de trabajo.

Nota:

Como alternativa a RStudio Server, puede usar RStudio Desktop para conectarse a un clúster de Azure Databricks o a un almacén de SQL desde la máquina de desarrollo local a través de una conexión ODBC y llamar a funciones de paquete ODBC para R. No puede usar paquetes como SparkR o sparklyr en el escenario de RStudio Desktop, a menos que también use Databricks Connect.

Para RStudio Server, puede usar la edición Open Source Edition o RStudio Workbench (anteriormente, RStudio Server Pro) en Azure Databricks. Si quiere usar RStudio Workbench / RStudio Server Pro, debe transferir la licencia existente de RStudio Workbench / RStudio Pro a Azure Databricks (vea Introducción a RStudio Workbench).

Databricks recomienda usar Databricks Runtime para Machine Learning (Databricks Runtime ML) en clústeres de Azure Databricks con RStudio Server para reducir los tiempos de inicio del clúster. Databricks Runtime ML incluye una versión sin modificar del paquete de RStudio Server Open Source Edition cuyo código fuente se puede encontrar en GitHub. En la tabla siguiente se muestra la versión de RStudio Server Open Source Edition que está preinstalado en versiones de Databricks Runtime ML.

Databricks Runtime para Versión ML RStudio Server Version
Databricks Runtime 7.3 LTS ML 1.2
Databricks Runtime 9.1 LTS ML y 10.4 LTS ML 1.4

Arquitectura de integración de RStudio

Cuando se usa RStudio Server en Azure Databricks, el demonio de RStudio Server se ejecuta en el nodo de controlador de un clúster de Azure Databricks. La interfaz de usuario web de RStudio se procesa en proxy por medio de la aplicación web de Azure Databricks, lo que significa que no es necesario realizar ningún cambio en la configuración de red del clúster. En este diagrama se muestra la arquitectura del componente de integración de RStudio.

Arquitectura de RStudio en Databricks

Advertencia

Azure Databricks procesa en proxy el servicio web de RStudio desde el puerto 8787 en el controlador de Spark del clúster. Este proxy web está pensado para su uso exclusivo con RStudio. Si inicia otros servicios web en el puerto 8787, podría exponer a los usuarios a posibles vulnerabilidades de seguridad. Ni Databricks ni Microsoft son responsables de los problemas debidos a la instalación de software no compatible en un clúster.

Requisitos

Introducción: RStudio Server OS Edition

Importante

Si usa Databricks Runtime 7.0 ML o versiones posteriores, RStudio Server Open Source Edition ya está instalado. Puede omitir la sección sobre cómo instalar RStudio Server e ir directamente a Uso de RStudio Server Open Source Edition.

Para empezar a trabajar con RStudio Server Open Source Edition en Azure Databricks, debe instalar RStudio en un clúster de Azure Databricks. Debe realizar esta instalación solo una vez. Normalmente, la instalación la realiza un administrador.

Nota:

No se puede acceder a RStudio Open Source Edition en un clúster que use el modo de acceso compartido para conectarse a Unity Catalog. Para obtener más información sobre los modos de acceso al clúster, consulte ¿Qué es el modo de acceso al clúster?.

Instalación de RStudio Server Open Source Edition

Para configurar RStudio Server Open Source Edition en un clúster de Azure Databricks que use Databricks Runtime 6.6 ML o versiones anteriores, debe crear un script init para instalar el paquete binario de RStudio Server Open Source Edition. Para más información, consulte Cluster-scoped init scripts (Script de init del ámbito de clúster). Esta es una celda de cuaderno de ejemplo que instala un script init en una ubicación en DBFS.

Importante

  • Todos los usuarios tienen acceso de lectura y escritura a DBFS, por lo que cualquier usuario puede modificar el script de inicialización. Si se trata de una posible incidencia, Databricks recomienda colocar el script de inicialización en Azure Data Lake Storage Gen2 y restringirle los permisos.

  • Es posible que tenga que modificar la dirección URL del paquete en función de la versión de Ubuntu del runtime, que puede encontrar en las notas de la versión.

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. Ejecute el código en un cuaderno para instalar el script en dbfs:/databricks/rstudio/rstudio-install.sh
  2. Antes de iniciar un clúster, agregue dbfs:/databricks/rstudio/rstudio-install.sh como script init. Vea Scripts de inicialización de ámbito de clúster para obtener detalles.
  3. Inicie el clúster.

Uso de RStudio Server Open Source Edition

  1. Muestre los detalles del clúster en el que ha instalado RStudio Server Open Source y haga clic en la pestaña Aplicaciones:

    Pestaña Aplicaciones de clústeres

  2. En la pestaña Aplicaciones, haga clic en el botón Configurar RStudio. Esto genera una contraseña de un solo uso automáticamente. Haga clic en el vínculo Mostrar para mostrar y copiar la contraseña.

    Contraseña de un solo uso de RStudio

  3. Haga clic en el vínculo Abrir RStudio para abrir la interfaz de usuario en una nueva pestaña. Escriba el nombre de usuario y la contraseña en el formulario de inicio de sesión e inicie sesión.

    Formulario de inicio de sesión de RStudio

  4. Desde la interfaz de usuario de RStudio puede importar el paquete SparkR y configurar una sesión de SparkR para iniciar trabajos de Spark en el clúster.

    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)
    

    Sesión de RStudio Server Open Source Edition

  5. También puede adjuntar el paquete sparklyr y configurar una conexión de 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)
    

    Conexión de sparklyr con RStudio Open Source Edition

Introducción: RStudio Workbench

En esta sección se muestra cómo configurar y empezar a usar RStudio Workbench (anteriormente RStudio Server Pro) en un clúster de Azure Databricks. Consulte las preguntas más frecuentes sobre el cambio de nombre. En función de su licencia, RStudio Workbench puede incluir RStudio Server Pro.

Configuración del servidor de licencias de RStudio

Para usar RStudio Workbench en Azure Databricks debe convertir la licencia Pro en una licencia flotante. Para obtener ayuda, póngase en contacto con help@rstudio.com. Para convertir la licencia se debe configurar un servidor de licencias para RStudio Workbench.

Para configurar un servidor de licencias:

  1. Inicie una instancia pequeña en la red del proveedor de nube; el demonio del servidor de licencias es muy ligero.
  2. Descargue e instale la versión correspondiente del servidor de licencias de RStudio en la instancia e inicie el servicio. Para obtener instrucciones detalladas, consulte la Guía de Administración de RStudio Workbench.
  3. Asegúrese de que el puerto del servidor de licencias está abierto para instancias de Azure Databricks.

Instalación de RStudio Workbench

Para configurar RStudio Workbench en un clúster de Azure Databricks, debe crear un script init para instalar el paquete binario de RStudio Workbench y configurarlo para usar el servidor de licencias para la concesión de licencias. Vea Scripts de inicialización de ámbito de clúster para obtener más detalles.

Nota:

Si tiene previsto instalar RStudio Workbench en una versión de Databricks Runtime que ya incluya el paquete de RStudio Server Open Source Edition, primero debe desinstalar ese paquete para que la instalación se ejecute correctamente.

A continuación se muestra una celda de cuaderno de ejemplo que genera un script init en DBFS. El script también realiza configuraciones de autenticación adicionales que simplifican la integración con Azure Databricks.

Importante

  • Todos los usuarios tienen acceso de lectura y escritura a DBFS, por lo que cualquier usuario puede modificar el script de inicialización. Si se trata de una posible incidencia, Databricks recomienda colocar el script de inicialización en Azure Data Lake Storage Gen2 y restringirle los permisos.

  • Es posible que tenga que modificar la dirección URL del paquete en función de la versión de Ubuntu del runtime, que puede encontrar en las notas de la versión.

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. Reemplace <domain> por la dirección URL de Azure Databricks y <license-server-url> por la dirección URL del servidor de licencias flotante.
  2. Ejecute el código en un cuaderno para instalar el script en dbfs:/databricks/rstudio/rstudio-install.sh
  3. Antes de iniciar un clúster, agregue dbfs:/databricks/rstudio/rstudio-install.sh como script init. Vea Scripts de inicialización de ámbito de clúster para obtener detalles.
  4. Inicie el clúster.

Uso de RStudio Server Pro

  1. Muestre los detalles del clúster en el que ha instalado RStudio y haga clic en la pestaña Aplicaciones:

    Pestaña Aplicaciones de clústeres

  2. En la pestaña Aplicaciones, haga clic en el botón Configurar RStudio.

    Contraseña de un solo uso de RStudio

  3. No necesita la contraseña de un solo uso. Haga clic en el vínculo Abrir interfaz de usuario de RStudio para que se abra automáticamente una sesión autenticada de RStudio Pro.

  4. Desde la interfaz de usuario de RStudio puede adjuntar el paquete SparkR y configurar una sesión de SparkR para iniciar trabajos de Spark en el clúster.

    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)
    

    Sesión de RStudio Pro

  5. También puede adjuntar el paquete sparklyr y configurar una conexión de 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)
    

    Conexión de sparklyr con RStudio Pro

Preguntas más frecuentes sobre RStudio Server

¿Cuál es la diferencia entre RStudio Server Open Source Edition y RStudio Workbench?

RStudio Workbench admite una amplia gama de características empresariales que no están disponibles en Open Source Edition. Puede ver la comparación de características en el sitio web de RStudio.

Además, RStudio Server Open Source Edition se distribuye con la licencia pública general de GNU Affero (AGPL), mientras que la versión Pro incluye una licencia comercial para las organizaciones que no pueden usar software de AGPL.

Por último, RStudio Workbench incluye soporte técnico profesional y empresarial de RStudio, PBC, mientras que RStudio Server Open Source Edition no incluye soporte técnico.

¿Puedo usar mi licencia de RStudio Workbench/RStudio Server Pro en Azure Databricks?

Sí, si ya tiene una licencia Pro o Enterprise para RStudio Server, puede usar esa licencia en Azure Databricks. Vea Introducción a RStudio Workbench para obtener información sobre cómo configurar RStudio Workbench en Azure Databricks.

¿Dónde se ejecuta RStudio Server? ¿Es necesario administrar servicios o servidores adicionales?

Como puede ver en el diagrama de arquitectura de integración de RStudio, el demonio de RStudio Server se ejecuta en el nodo de controlador (maestro) del clúster de Azure Databricks. Con RStudio Server Open Source Edition no es necesario ejecutar ningún servidor ni servicio adicional. Pero en RStudio Workbench debe administrar una instancia independiente que ejecute el servidor de licencias de RStudio.

¿Puedo usar RStudio Server en un clúster estándar?

Nota:

En este artículo se describe la interfaz de usuario heredada de los clústeres. Para obtener información sobre la nueva interfaz de usuario de clústeres (en versión preliminar), incluidos los cambios de terminología para los modos de acceso al clúster, consulte Creación de un clúster. Para ver una comparación entre los tipos de clúster nuevos y los heredados, consulte Cambios en la interfaz de usuario de los clústeres y modos de acceso del clúster.

Sí, puede hacerlo.

¿Puedo usar RStudio Server en un clúster con terminación automática?

No, no se puede usar RStudio cuando la terminación automática está habilitada. La terminación automática puede purgar los scripts de usuario y los datos no guardados dentro de una sesión de RStudio. Para proteger a los usuarios frente a este escenario de pérdida de datos no intencionada, RStudio está deshabilitado en esos clústeres de manera predeterminada.

Para los clientes que requieren la limpieza de los recursos de clúster cuando no se usan, Databricks recomienda usar las API de clúster para limpiar clústeres de RStudio según una programación.

¿Cómo debo conservar mi trabajo en RStudio?

Se recomienda encarecidamente conservar el trabajo mediante un sistema de control de versiones de RStudio. RStudio es compatible con varios sistemas de control de versiones y permite proteger y administrar los proyectos. Si no conserva el código mediante uno de los siguientes métodos, se arriesga a perder el trabajo si un administrador reinicia o finaliza el clúster.

Un método es guardar los archivos (código o datos) en ¿Qué es el sistema de archivos de Databricks (DBFS)? Por ejemplo, si guarda un archivo en /dbfs/, los archivos no se eliminan cuando el clúster finaliza o se reinicia.

Otro método es guardar el cuaderno de R en el sistema de archivos local; para ello, expórtelo como Rmarkdown y luego importe el archivo en la instancia de RStudio. En el blog Uso compartido de cuadernos de R mediante RMarkdown se describen los pasos más detalladamente.

¿Cómo inicio una sesión de SparkR?

SparkR está incluido en Databricks Runtime, pero se debe cargar en RStudio. Ejecute el código siguiente en RStudio para inicializar una sesión de SparkR.

library(SparkR)

sparkR.session()

Si se produce un error al importar el paquete SparkR, ejecute .libPaths() y compruebe que /home/ubuntu/databricks/spark/R/lib está incluido en el resultado.

Si no está incluido, compruebe el contenido de /usr/lib/R/etc/Rprofile.site. Muestre /home/ubuntu/databricks/spark/R/lib/SparkR en el controlador para comprobar que el paquete SparkR está instalado.

¿Cómo inicio una sesión de sparklyr?

El paquete sparklyr debe estar instalado en el clúster. Use uno de los métodos siguientes para instalar el paquete sparklyr:

  • Como biblioteca de Azure Databricks
  • Comando install.packages()
  • Interfaz de usuario de administración de paquetes de RStudio
library(sparklyr)

sc <- spark_connect(method = “databricks”)

¿Cómo se integra RStudio con cuadernos de R de Azure Databricks?

Puede mover el trabajo entre cuadernos y RStudio por medio del control de versiones.

¿Qué es el directorio de trabajo?

Cuando se inicia un proyecto en RStudio, se elige un directorio de trabajo. De manera predeterminada, es el directorio principal del contenedor del controlador (maestro) donde se ejecuta RStudio Server. Si quiere, puede cambiar este directorio.

¿Puedo iniciar aplicaciones de Shiny desde RStudio con Azure Databricks?

Sí, puede desarrollar y ver aplicaciones de Shiny dentro de RStudio Server en Databricks.

No puedo usar el terminal ni Git dentro de RStudio en Azure Databricks. ¿Cómo puedo arreglarlo?

Asegúrese de haber deshabilitado WebSockets. En RStudio Server Open Source Edition, puede hacerlo desde la interfaz de usuario.

Sesión de RStudio

En RStudio Server Pro, puede agregar allow-terminal-websockets=0 a /etc/rstudio/rsession.conf para deshabilitar WebSockets para todos los usuarios.

No veo la pestaña Aplicaciones en los detalles del clúster.

Esta característica no está disponible para todos los clientes. Debe tener el plan Premium.