Uso de R para Apache Spark con Azure Synapse Analytics (versión preliminar)

Azure Synapse Analytics proporciona compatibilidad integrada con R para Apache Spark. Como parte de esto, los científicos de datos pueden usar los cuadernos de Azure Synapse Analytics para escribir y ejecutar su código de R. Esto también incluye compatibilidad con SparkR y SparklyR, que permite a los usuarios interactuar con Spark mediante interfaces conocidas de Spark o R.

En este artículo, aprenderá a usar R para Apache Spark con Azure Synapse Analytics.

Entorno de ejecución de R

Azure Synapse Analytics admite un entorno de ejecución de R que incluye varios paquetes de R de código abierto populares, incluido TidyVerse. El entorno de ejecución de R está disponible en todos los grupos de Apache Spark 3.

Para obtener más información sobre las bibliotecas instaladas en cada entorno de ejecución, puede visitar la página siguiente: Entornos de ejecución de Azure Synapse Analytics

Creación y ejecución de sesiones de cuadernos

Un cuaderno de Azure Synapse es una interfaz web para crear archivos que contengan código activo, visualizaciones y texto narrativo. Los cuadernos son un buen lugar para validar ideas y aplicar experimentos rápidos para sacar conclusiones a partir de los datos. Los cuadernos también se usan profusamente en la preparación y visualización de datos, el aprendizaje automático y otros escenarios de macrodatos.

Para empezar a trabajar con R en cuadernos de Synapse, puede cambiar el lenguaje principal estableciendo la opción de idioma en SparkR (R).

Screenshot of the R language option.

Asimismo, para usar varios lenguajes en un cuaderno, puede especificar el comando magic de lenguaje al principio de una celda.

%%sparkr
# Enter your R code here

Para obtener más información sobre los cuadernos de Azure Synapse Analytics, puede consultar la guía sobre cómo administrar cuadernos.

Instalar paquetes

Las bibliotecas proporcionan código reutilizable que se puede incluir en los programas o proyectos. A fin de que el código de terceros o de compilación local esté disponible para las aplicaciones, puede instalar una biblioteca en uno de los grupos de Apache Spark sin servidor o en una sesión de cuaderno.

Administración de paquetes de área de trabajo de R

En Synapse, los paquetes de área de trabajo pueden ser archivosR tar.gz personalizados o privados. Puede cargar estos paquetes en su área de trabajo y después asignarlos a un grupo de Apache Spark sin servidor específico. Una vez asignados, estos paquetes de área de trabajo se instalan automáticamente en todas las sesiones del grupo de Spark que se iniciaron en el grupo correspondiente.

Para obtener más información sobre cómo administrar bibliotecas del área de trabajo, consulte el siguiente artículo: Administración de paquetes del área de trabajo.

Administración de sesiones de R

Al realizar análisis de datos interactivos o aprendizaje automático, puede probar paquetes más recientes o necesitar paquetes que ya no están disponibles en el grupo de Apache Spark. En lugar de actualizar la configuración del grupo, los usuarios ahora pueden usar paquetes de ámbito de sesión para agregar, administrar y actualizar dependencias de sesión.

  • Al instalar las bibliotecas de ámbito de sesión, solo el cuaderno actual tiene acceso a las bibliotecas especificadas.
  • Estas bibliotecas no afectarán a otras sesiones o trabajos que usen el mismo grupo de Spark.
  • Las bibliotecas se instalan sobre las bibliotecas del entorno de ejecución base y de nivel de grupo.
  • Las bibliotecas de cuadernos tienen la prioridad más alta.
  • Las bibliotecas de R con ámbito de sesión no se conservan entre sesiones. Estas bibliotecas se instalan al principio de cada sesión cuando se ejecuten los comandos de instalación relacionados
  • Las bibliotecas de R con ámbito de sesión se instalan automáticamente en los nodos de controlador y de trabajo.

Por ejemplo, los usuarios pueden instalar una biblioteca de R desde las instantáneas CRAN y CRAN. En el ejemplo siguiente, Highcharter es un paquete popular para las visualizaciones de R. Puedo instalar este paquete en todos los nodos del grupo de Apache Spark mediante el siguiente comando:

install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

Para obtener más información sobre cómo administrar las bibliotecas de R de la sesión, puede consultar el siguiente artículo: Administración de paquetes de sesión de R.

Utilidades de cuaderno

Las utilidades de Spark para Microsoft (MSSparkUtils) son un paquete integrado que le ayuda a realizar las tareas más comunes con mayor facilidad. Puede usar MSSparkUtils para trabajar con sistemas de archivos, obtener variables de entorno, encadenar cuadernos entre sí y trabajar con secretos. MSSparkUtils es compatible con cuadernos de R.

Para comenzar, puede ejecutar los siguientes comandos:

library(notebookutils)
mssparkutils.fs.help()

Para obtener más información sobre los comandos MSSparkUtils compatibles, consulte el siguiente artículo: Uso de utilidades de Microsoft Spark.

Uso de SparkR

SparkR es un paquete de R que proporciona un front-end ligero para usar Apache Spark desde R. SparkR proporciona una implementación de trama de datos distribuida que admite operaciones como la selección, el filtrado o la agregación de elementos, entre otras. Igualmente, SparkR también admite el aprendizaje automático distribuido mediante MLlib.

Creación de un dataframe de SparkR a partir de un elemento data.frame local de R

La manera más sencilla de crear un dataframe es convertir un elemento data.frame de R local en un valor de SparkDataFrame. En este ejemplo, usaremos as.DataFrame y pasaremos el dataframe de R local para crear el valor SparkDataFrame.

df <- as.DataFrame(faithful)

# Displays the first part of the SparkDataFrame
head(df)
##  eruptions waiting
##1     3.600      79
##2     1.800      54

Creación de un dataframe de SparkR mediante la API del origen de datos de Spark

SparkR puede funcionar en varios orígenes de datos a través de la interfaz SparkDataFrame. El método general para crear un DataFrame a partir de un origen de datos es read.df. Este método toma la ruta de acceso del archivo que se va a cargar y el tipo de origen de datos. SparkR admite la lectura de archivos de texto, CSV, JSON y Parquet de forma nativa.

# Read a csv from ADLSg2
df <- read.df('abfss://<container name>@<storage account name>.dfs.core.windows.net/avocado.csv', 'csv', header="true")
head(df)

Creación de un dataframe de SparkR mediante Spark SQL

También se puede crear dataframes de SparkR mediante consultas de SQL Spark.

# Register this SparkDataFrame as a temporary view.
createOrReplaceTempView(df, "eruptions")

# SQL statements can be run by using the sql method
sql_df <- sql("SELECT * FROM eruptions")
head(sql_df)

Machine Learning

SparkR expone la mayoría de los algoritmos de MLLib. En segundo plano, SparkR usa MLlib para entrenar el modelo. Para obtener más información sobre qué algoritmos de aprendizaje automático se admiten, puede consultar la documentación de SparkR y MLlib.

# Create the DataFrame
cars <- cbind(model = rownames(mtcars), mtcars)
carsDF <- createDataFrame(cars)

# Fit a linear model over the dataset.
model <- spark.glm(carsDF, mpg ~ wt + cyl)

# Model coefficients are returned in a similar format to R's native glm().
summary(model)

Uso de SparklyR

SparklyR es una interfaz de R para Apache Spark. Esta interfaz proporciona un mecanismo para interactuar con Spark mediante interfaces de R conocidas.

Para establecer una conexión sparklyr, puede utilizar el siguiente método de conexión en spark_connect().

spark_version <- "<enter Spark version>"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config, method='synapse')

Pasos siguientes