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 tókenes para entidades de servicio, consulte Administración de tokens de acceso 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), instala los paquetes ODBC y DBI desde 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. 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 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

  • El clúster debe ser un clúster multiuso.

  • Debe tener permiso CAN ATTACH TO en ese clúster. El administrador del clúster puede concederle este permiso. Consulte los Permisos de proceso.

  • El clúster no debe tener habilitado el control de acceso a tablas, la terminación automática ni el paso a través de credenciales.

  • El clúster no debe usar el modo de accesocompartido.

  • El clúster no debe tener la configuración de Spark spark.databricks.pyspark.enableProcessIsolation establecida en true.

  • Debe tener una licencia flotante de RStudio Server Pro para usar la edición Pro.

Nota:

Aunque el clúster puede usar un modo de acceso que admite Unity Catalog, no puede usar RStudio Server desde ese clúster para acceder a los datos en Unity Catalog.

Introducción: RStudio Server OS Edition

RStudio Server Open Source Edition está preinstalado en clústeres de Azure Databricks que usan Databricks Runtime para Machine Learning (Databricks Runtime ML).

Para abrir RStudio Server OS Edition en un clúster, haga lo siguiente:

  1. Abra la página de detalles del clúster.

  2. Inicie el clúster y, a continuación, haga clic en la pestaña Aplicaciones :

    Pestaña Aplicaciones de clústeres

  3. 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

  4. 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

  5. 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

  6. 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.

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.

Debajo se muestra un archivo .sh de ejemplo que puede almacenar como un script de inicialización en una ubicación como, por ejemplo, el directorio principal, como un archivo de área de trabajo, en un volumen de Unity Catalog o en el almacenamiento de objetos. Para más información, vea Uso de los scripts de inicialización con ámbito de clúster. El script también realiza configuraciones de autenticación adicionales que simplifican la integración con Azure Databricks.

Advertencia

Los scripts de inicialización con ámbito de clúster en DBFS están al final del ciclo de vida. El almacenamiento de scripts en DBFS existe en algunas áreas de trabajo para admitir cargas de trabajo heredadas y no se recomienda. Se deben migrar todos los scripts de inicialización almacenados en DBFS. Para obtener instrucciones de migración, consulte Migración de scripts de inicialización desde 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. 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. Almacene este archivo .sh como un script de inicialización en una ubicación como, por ejemplo, el directorio principal, como un archivo de área de trabajo, en un volumen de Unity Catalog o en el almacenamiento de objetos. Para más información, vea Uso de los scripts de inicialización con ámbito de clúster.
  3. Antes de iniciar un clúster, agregue este archivo .sh como un script de inicialización desde la ubicación asociada. Para obtener más instrucciones, vea Uso de scripts de inicialización con ámbito de clúster.
  4. Inicie el clúster.

Uso de RStudio Server Pro

  1. Abra la página de detalles del clúster.

  2. Inicie el clúster y haga clic en la pestaña Aplicaciones :

    Pestaña Aplicaciones de clústeres

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

    Contraseña de un solo uso de RStudio

  4. 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.

  5. 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

  6. 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 Referencia de configuración de proceso. 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 conservas el código a través de uno de los siguientes métodos, corres el riesgo de perder el trabajo si un administrador del área de trabajo 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.