Azure Databricks para desarrolladores de R

En esta sección se ofrece una guía para el desarrollo de cuadernos y trabajos en Azure Databricks mediante el lenguaje R.

Un flujo de trabajo básico para empezar es:

  1. Importar código: importe su propio código desde archivos o repositorios de Git, o bien pruebe el tutorial que se muestra a continuación. Databricks recomienda aprender a usar cuadernos interactivos de Azure Databricks.
  2. Ejecute el código en un clúster: cree un clúster propio, o bien asegúrese de que tiene permisos para usar un clúster compartido. Asocie el cuaderno al clúster y ejecute el cuaderno.

Más allá de esto, puede expandir horizontes hacia temas más específicos:

Tutoriales

En los tutoriales siguientes se proporcionan código y cuadernos de ejemplo para aprender sobre los flujos de trabajo comunes. Consulte Importar un cuaderno para obtener instrucciones sobre cómo importar ejemplos de cuadernos en el área de trabajo.

Referencia

En las subsecciones siguientes se enumeran las características y sugerencias clave que le ayudarán a empezar a desarrollar en Azure Databricks con R.

Azure Databricks admite dos API que proporcionan una interfaz de R para Apache Spark: SparkR y sparklyr.

SparkR

En estos artículos se proporciona una introducción y referencia para SparkR. SparkR es una interfaz de R para Apache Spark que proporciona una implementación de trama de datos distribuida. SparkR admite operaciones como la selección, el filtrado y la agregación (similar a los marcos de datos de R), pero en grandes conjuntos de datos.

sparklyr

En este artículo se proporciona una introducción a sparklyr. sparklyr es una interfaz de R para Apache Spark que proporciona funcionalidad similar a dplyr, broom y DBI.

Comparación entre SparkR y sparklyr

En este artículo se explican las similitudes y las diferencias clave entre SparkR y sparklyr.

Uso de DataFrames y tablas con SparkR y sparklyr

En este artículo se describe cómo usar R, SparkR, sparklyr y dplyr para trabajar con data.frames de R, DataFrames de Spark y tablas de Spark en Azure Databricks.

Administración de código con cuadernos y carpetas Git de Databricks

Los cuadernos de Azure Databricks admiten R y ofrecen una funcionalidad similar a la de Jupyter, pero con añadidos como visualizaciones integradas mediante macrodatos, integraciones de Apache Spark para la depuración y supervisión del rendimiento, e integraciones de MLflow para el seguimiento de los experimentos de aprendizaje automático. Comenzar importando un cuaderno. Una vez que tenga acceso a un clúster, puede asociar un cuaderno al clúster y ejecutar el cuaderno.

Las carpetas Git de Azure Databricks permiten a los usuarios sincronizar cuadernos y otros archivos con repositorios de Git. Las carpetas Git de Azure Databricks ayudan con el control de versiones de código y la colaboración, y pueden simplificar la importación de un repositorio completo de código en Azure Databricks, la visualización de versiones anteriores del cuaderno y la integración con el desarrollo de IDE. Comenzar clonando un repositorio de Git remoto. Después, puedes abrir o crear cuadernos con el clon del repositorio, adjuntar el cuaderno a un clúster y ejecutar el cuaderno.

Clústeres

Compute de Azure Databricks proporciona administración de procesos para nodos únicos y clústeres grandes. Puede personalizar el hardware y las bibliotecas del clúster según sus necesidades. Por lo general, los científicos de datos comenzarán a trabajar creando un clúster o usando un clúster compartido existente. Una vez que tenga acceso a un clúster, puede asociar un cuaderno al clúster o ejecutar un trabajo en el clúster.

R de nodo único y R distribuido

Los clústeres de Azure Databricks constan de un nodo de controlador de Apache Spark y cero o más nodos de trabajo de Spark (también conocidos como ejecutores). El nodo de controlador mantiene el estado del cuaderno adjunto, mantiene el SparkContext, interpreta los comandos de cuaderno y biblioteca y ejecuta el maestro de Spark que coordina con los ejecutores de Spark. Los nodos de trabajo ejecutan los ejecutores de Spark, un ejecutor de Spark por nodo de trabajo.

Un clúster de nodo único tiene un nodo de controlador y ningún nodo de trabajo, con Spark ejecutándose en modo local para admitir el acceso a las tablas administradas por Azure Databricks. Los clústeres de nodo único admiten RStudio, cuadernos y bibliotecas, y son útiles para proyectos de R que no dependen de Spark para el procesamiento paralelo o de macrodatos. Consulte Proceso de nodo único o de varios nodos.

En el caso de cantidades de datos que R tiene dificultades para procesar (muchos gigabytes o petabytes), debe usar clústeres distribuidos o de varios nodos en su lugar. Los clústeres distribuidos tienen un nodo de controlador y uno o varios nodos de trabajo. Los clústeres distribuidos no solo admiten RStudio, cuadernos y bibliotecas, sino que los paquetes de R, como SparkR y sparklyr están diseñados de forma única para usar clústeres distribuidos a través del SparkContext. Estos paquetes proporcionan API conocidas de SQL y DataFrame, que permiten asignar y ejecutar varias tareas y comandos de Spark en paralelo en los nodos de trabajo. Para más información sobre sparklyr y SparkR, consulte Comparación entre SparkR y sparklyr.

Algunas funciones de SparkR y sparklyr que aprovechan en particular la distribución del trabajo relacionado entre los nodos de trabajo incluyen lo siguiente:

  • sparklyr::spark_apply: ejecuta código de R arbitrario a gran escala dentro de un clúster. Esto es especialmente útil para usar la funcionalidad que solo está disponible en R o paquetes de R que no están disponibles en Apache Spark ni en otros paquetes de Spark.
  • SparkR::dapply: aplica la función especificada a cada partición de un SparkDataFrame.
  • SparkR::dapplyCollect: aplica la función especificada a cada partición de un SparkDataFrame y recopila los resultados de nuevo en R como undata.frame.
  • SparkR::gapply: agrupa un SparkDataFrame mediante las columnas especificadas y aplica la función de R especificada a cada grupo.
  • SparkR::gapplyCollect: agrupa un SparkDataFrame mediante las columnas especificadas, aplica la función de R especificada a cada grupo y recopila el resultado de nuevo en R como un data.frame.
  • SparkR::spark.lapply: ejecuta la función especificada en una lista de elementos, distribuyendo los cálculos con Spark.

Para obtener ejemplos, consulte el cuaderno R distribuido: funciones definidas por el usuario en Spark.

Databricks Container Services

Databricks Container Services le permite especificar una imagen de Docker cuando crea un clúster. Databricks proporciona la imagen base databricksruntime/rbase en Docker Hub como un ejemplo para iniciar un clúster de Databricks Container Services con compatibilidad con R. Consulte también el Dockerfile que se usa para generar esta imagen base.

Bibliotecas

Los clústeres de Azure Databricks usan Databricks Runtime, que proporciona muchas bibliotecas populares listas para usar, como Apache Spark, Delta Lake, etc. También puede instalar paquetes R adicionales de terceros o personalizados en bibliotecas para usarlos con cuadernos y trabajos.

Comience con las bibliotecas predeterminadas en las versiones de las notas de la versión y compatibilidad de Databricks Runtime. Use Databricks Runtime para Machine Learning para cargas de trabajo de aprendizaje automático. Para obtener listas completas de bibliotecas preinstaladas, consulte la sección "Bibliotecas de R instaladas" para el Databricks Runtime de destino en las notas de la versión de Databricks Runtime.

Puede personalizar su entorno mediante el uso de bibliotecas de R con alcance de cuaderno, que le permiten modificar su entorno de cuaderno o trabajo con bibliotecas de CRAN u otros repositorios. Para ello, puede usar la conocida función install.packages de utils. En el ejemplo siguiente se instala el paquete de Arrow R desde el repositorio CRAN predeterminado:

install.packages("arrow")

Si necesita una versión anterior a la que se incluye en el Databricks Runtime, puedes usar un cuaderno para ejecutar la función install_version desde devtools. El siguiente ejemplo instala la versión 0.7.4 de dplyr desde CRAN:

require(devtools)

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

Los paquetes instalados de esta manera están disponibles en un clúster. Se limitan al usuario que los instala. Esto le permite instalar varias versiones del mismo paquete en el mismo proceso sin crear conflictos de paquetes.

Puede instalar otras bibliotecas como bibliotecas de clúster según sea necesario, por ejemplo desde CRAN. Para ello, en la interfaz de usuario del clúster, haga clic en Bibliotecas > Instalar nuevo > CRAN y especifique el nombre de la biblioteca. Este enfoque es especialmente importante para cuando quiera llamar a funciones definidas por el usuario con SparkR o sparklyr.

Para más información, consulte Bibliotecas.

Para instalar un paquete personalizado en una biblioteca:

  1. Compile el paquete personalizado desde la línea de comandos o mediante RStudio.

  2. Copie el archivo de paquete personalizado de la máquina de desarrollo en el área de trabajo de Azure Databricks. Para obtener opciones, consulte Bibliotecas.

  3. Instale el paquete personalizado en una biblioteca mediante la ejecución de install.packages.

    Por ejemplo, desde un cuaderno del área de trabajo:

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

    O:

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

Después de instalar un paquete personalizado en una biblioteca, agregue la biblioteca a la ruta de acceso de búsqueda y, a continuación, cargar la biblioteca con un solo comando.

Por ejemplo:

# 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>)

Para instalar un paquete personalizado como biblioteca en cada nodo de un clúster, debe usar ¿Qué son los scripts de inicialización?.

Visualizaciones

Los cuadernos de Azure Databricks R admiten varios tipos de visualizaciones mediante la función display.

Trabajos

Puede automatizar las cargas de trabajo de R como trabajos de cuaderno programados o desencadenados Creación y ejecución de trabajos de Azure Databricks en Azure Databricks.

  • Para obtener más información sobre cómo crear un trabajo a través de la interfaz de usuario, consulte Crear un trabajo.
  • Jobs API permite crear, editar y eliminar trabajos.
  • La CLI de Databricks proporciona una interfaz de línea de comandos cómoda para llamar a la API Jobs.

Machine Learning

Databricks admite una amplia variedad de cargas de trabajo de aprendizaje automático (ML), incluidos el ML tradicional en datos tabulares, el aprendizaje profundo para visión artificial y el procesamiento de lenguaje natural, los sistemas de recomendaciones, el análisis de grafos, etc. Para obtener información general sobre el aprendizaje automático en Azure Databricks, consulte la Databricks Runtime para Machine Learning.

Para los algoritmos de ML, puede usar bibliotecas preinstaladas en Databricks Runtime para Machine Learning. También puede instalar bibliotecas personalizadas.

Para las operaciones de aprendizaje automático (MLOps), Azure Databricks proporciona un servicio administrado para la biblioteca de código abierto MLFlow. Con el seguimiento de MLflow, puede registrar el desarrollo de modelos y guardar modelos en formatos reutilizables. Puede usar el Registro de modelos de MLflow para administrar y automatizar la promoción de modelos hacia producción. Trabajos y Servicio de modelos permiten hospedar modelos como trabajos por lotes y de streaming como puntos de conexión REST. Para más información y ejemplos, vea la Administración del ciclo de vida de ML mediante MLflow o la documentación de la API de R de MLflow.

Herramientas de desarrollo de R

Además de los cuadernos de Azure Databricks, también puede usar las siguientes herramientas de desarrollador de R:

Personalización de sesión de R

En Databricks Runtime 12.2 LTS y versiones posteriores, las sesiones de R se pueden personalizar mediante archivos de perfil de todo el sitio (.Rprofile). Los cuadernos de R obtendrán el archivo como código de R durante el inicio. Para modificar el archivo, busque el valor de R_HOME y modifique $R_HOME/etc/Rprofile.site. Tenga en cuenta que Databricks ha agregado configuración en el archivo para garantizar una funcionalidad adecuada para RStudio hospedado en Azure Databricks. La eliminación de cualquier parte de esta configuración puede hacer que RStudio no funcione según lo previsto.

En Databricks Runtime 11.3 LTS y versiones anteriores, este comportamiento se puede habilitar estableciendo la variable de entorno DATABRICKS_ENABLE_RPROFILE=true.

Recursos adicionales